knockout.js - root access viewmodel

Ada*_*itt 1 data-binding knockout.js

有没有办法从列表中项目的回调内部访问根视图模型?

例:

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();
}
Run Code Online (Sandbox Code Playgroud)

Bri*_*gel 5

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

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

http://jsfiddle.net/bczengel/trm7y/

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