Data binding knockout.js-根访问视图模型

Data binding knockout.js-根访问视图模型,data-binding,knockout.js,Data Binding,Knockout.js,是否有方法从列表中某个项的回调内部访问根viewmodel 例如: function Employee() { var self = this; this.notes = ko.observableArray(); this.addNote = function() { // need to access the EmployeeViewModel here in order to set its detailedNote } } functi

是否有方法从列表中某个项的回调内部访问根viewmodel

例如:

function Employee() {
    var self = this;
    this.notes = ko.observableArray();

    this.addNote = function() {
       // need to access the EmployeeViewModel here in order to set its detailedNote 
    }
}

function EmployeeViewModel() {
    var self = this;
    this.employees= ko.observableArray([]);

    // observables used as placeholders in modal windows
    this.detailedEmployee = ko.observable();
    this.detailedNote = ko.observable();
}

有$root,您可以将其传递到回调中,或者创建了解VM的员工,或者创建一个全局或存储库,或者在VM上没有注释,或者从捕获VM自身的视图模型将函数附加到员工……

有$root,您可以将其传递到回调中,或者你创建了了解虚拟机的员工,或者你有一个全局或存储库,或者你没有虚拟机上的注释,或者从捕获虚拟机自身的视图模型将函数附加到员工…

我假设在某个时刻,您将向视图模型中的员工可观察阵列添加员工实例。创建实例时,将parentVM传递给员工构造函数。唯一需要注意的是,您将无法调用ko.toJSON,因为当它试图字符串化对象时,它只会继续循环

我不得不做出一些推论,因为你没有提供很多细节,但我试着给你举个例子


另一方面,在创建多个对象实例时需要注意的一点是,将内部函数放入构造函数的原型中,这样就不会创建执行相同操作的函数的副本。例如,addNote函数将为您创建的每个Employee实例创建一次。如果使用原型继承,则只会创建一个原型继承。在我的示例中也有此更改。

我假设在某个时候,您将向视图模型中的employees observableArray添加Employee实例。创建实例时,将parentVM传递给员工构造函数。唯一需要注意的是,您将无法调用ko.toJSON,因为当它试图字符串化对象时,它只会继续循环

我不得不做出一些推论,因为你没有提供很多细节,但我试着给你举个例子


另一方面,在创建多个对象实例时需要注意的一点是,将内部函数放入构造函数的原型中,这样就不会创建执行相同操作的函数的副本。例如,addNote函数将为您创建的每个Employee实例创建一次。如果使用原型继承,则只会创建一个原型继承。这个变化也在我的例子中。

这就是我一直在寻找的答案。谢谢。这就是我想要的答案。谢谢