Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 将ViewModel作为参数发送到Knockout_Asp.net Mvc_Knockout.js_Typescript - Fatal编程技术网

Asp.net mvc 将ViewModel作为参数发送到Knockout

Asp.net mvc 将ViewModel作为参数发送到Knockout,asp.net-mvc,knockout.js,typescript,Asp.net Mvc,Knockout.js,Typescript,我正在使用TypeScript进行敲除试验,并尝试将包含另一个模型作为参数的视图模型发送到以下函数: 打字稿: export interface IEmployee {...} export interface ICompany {...} export class ViewModel() { constructor(company : ICompany) {} public setAsOwner(parent : ViewModel, person : IEmployee)

我正在使用TypeScript进行敲除试验,并尝试将包含另一个模型作为参数的视图模型发送到以下函数:

打字稿:

export interface IEmployee {...}
export interface ICompany {...}

export class ViewModel() {
    constructor(company : ICompany) {}
    public setAsOwner(parent : ViewModel, person : IEmployee) {
        parent.company.updateOwner(person.id);
    }
}

// In a different file
ko.applyBindings(new ViewModel(new ICompany()));
HTML:

  • @*员工详细信息*@ 设为新所有者
但是,我不断收到一个错误,说
parent.company
未定义。将视图模型作为参数传递给自己的函数的正确方法是什么?

绑定处理程序函数自动接收当前员工项目作为第一个参数,如果您从包装器函数调用
$parent.setAsOwner
,则父视图模型可通过
this
供方法使用

因此,将
setAsOwner
方法更改为:

publicsetasowner(个人:i员工){
this.company.updateOwner(person.id);
}
并将HTML文件发送至:

  • @*员工详细信息*@ 设为新所有者
绑定处理程序函数自动接收当前员工项目作为第一个参数,如果您从包装函数调用
$parent.setAsOwner
,则父视图模型可通过
this
供方法使用

因此,将
setAsOwner
方法更改为:

publicsetasowner(个人:i员工){
this.company.updateOwner(person.id);
}
并将HTML文件发送至:

  • @*员工详细信息*@ 设为新所有者
<ul data-bind="foreach: employees">
    <li>
        @*Employee details...*@
        <button data-bind="click: $root.setAsOwner.bind($parent, $data)">
            Set as new owner
        </button>
    </li>
</ul>