2012-03-26 10 views
0

ビューモデルは関数として宣言されています。これは、クロージャー内の他の関数や変数を参照しやすくするためです。単純なキー/値オブジェクトの場合、他の変数/関数を参照するために 'this'を使用することはできません。自己呼び出し機能を持つKnockoutJSモデルを宣言することの違いは何ですか?

ただし、関数を使用してモデルを宣言する方法は2つあります。

var vm1 = function() { 
    this.mydata = ko.observable(null) 
} 

ko.applyBindings(new vm1()); 

そして、自己起動機能使用:

var vm2 = function() { 
    this.mydata = ko.observable(null) 
}(); 

ko.applyBindings(vm2); 

を2つのアプローチの違いは何ですか?私が探しているのは、KOがvm2内のプロパティをプライベートであると「見る」ことができるかどうかわからないため、第2のアプローチを使用すると問題が発生することです。しかし、vm1のプロパティはどのように表示されますか?

また、 'revealing-module'パターンがKOビューモデルと互換性があり、代わりにこれを使用する必要があるかどうかは疑問です。

+0

ああ、ちょっと待ってください。*効果的にパブリックプロパティを作成しますか? – jaffa

答えて

0

はあなたの最初の例では、VM1オブジェクトの新しいインスタンスを宣言している、これはこれはとないVM2のインスタンスにwindowオブジェクトを参照する2番目の例ではVM1インスタンス

を参照してください

次に、自分のコメントに答えるためにyesを指定すると、2番目の例ではウィンドウオブジェクトにmydataというプロパティしか作成されません。

関連する問題