1

リスト内の項目のコールバック内からルート ビューモデルにアクセスする方法はありますか?

例:

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();
}
4

2 に答える 2

5

ある時点で、ビューモデルのemployeesobservableArrayにEmployeeのインスタンスを追加すると想定しています。インスタンスを作成するときに、parentVMをEmployeeコンストラクターに渡します。唯一の注意点は、ko.toJSONを呼び出すことができないことです。これは、オブジェクトを文字列化しようとすると、円を描くように動き続けるためです。

あなたが多くの詳細を提供しなかったので、私はいくつかの推論をしなければなりませんでした、しかし私はあなたのために例を一緒に投げようとしました。

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

ちなみに、オブジェクトの複数のインスタンスを作成するときのちょっとしたヒントとして、内部関数をコンストラクターのプロトタイプに入れて、同じことを行う関数のコピーを作成しないようにします。たとえば、addNote関数は、作成するEmployeeのインスタンスごとに1回作成されます。プロトタイプの継承を使用する場合、1つだけが作成されます。この変更は私の例にもあります。

于 2012-05-19T02:14:45.787 に答える
0

コールバックに渡すことができる $root があります。または、VM の知識を持つ従業員を作成するか、醜い、グローバル (またはリポジトリ) を持つか、VM にメモを持たないか、関数を添付します。 VMの「自己」をキャプチャするビューモデルから従業員に....

于 2012-05-18T03:32:45.193 に答える