私は親子ビューモデルオブジェクト構造を設定しておき、子の親ビューオブビューを更新する必要があります。私は基本的にはそうするための2つのパターンを作ってみた:子ビューモデルから親に対して観測可能なノックアウトを修正するためのパターン
1]を子供に親のプロパティの参照を渡し、子の中からプロパティを更新します。
var ParentViewModel = function(){
var self = this;
this.selectedItem = ko.observable();
this.child = ko.observable(new ChildViewModel(self.selectedItem));
}
var ChildViewModel = function(parentSelectedItem){
var self = this;
this.id = ko.observable();
this.parentSelectedItem = parentSelectedItem;
this.select = function(){
self.parentSelectedItem(self);
}
}
2]子どもの作成します親のメソッドを選択し、親を観測可能なものをローカルで参照してください。
var ParentViewModel = function(){
var self = this;
this.selectedItem = ko.observable();
var child = new ChildViewModel();
child.select = function(){
self.selectedItem(child);
}
this.child = ko.observable(child);
}
var ChildViewModel = function(){
this.id = ko.observable();
}
どちらのパターンも私をヒールで頭を上がらせません。最初のものは、プロパティ参照全体を子ビューモデルにプッシュし、2番目のビューは子のスコープの外に子の関数を定義します。
誰にも、この操作がきれいでテスト可能な方法でjavascriptでどのように達成できるかについての他のパターン提案がありますか?あるいは、私は多かれ少なかれこれらの2つのオプションだけでつかまっていますか?
ありがとうライアン、私はよく思った答えに感謝します。 – KodeKreachor
私はこの回答のために+2ボタンが必要です – KodeKreachor
私はあなたにもそれをプラスします:-)これを行うための非常にクリーンな方法。また、人々が望む子ビューモデルは、まったく別のモデル(その純粋なデータ)であることがよくあります。ときには、そのように我々がそれらを呼び出すものは、そのように考えるのは簡単です –