バインディングが適用されるDOMの部分を制限する必要があります。同じページ/ドキュメントに複数のビューモデルをバインドすることはできますが、重複させることはできません。したがって、いくつかのIDを指定し、ページの個別の部分へのバインドを制限します。
オプションで、2番目のパラメーターを渡して、データバインド属性を検索するドキュメントの部分を定義できます。たとえば、ko.applyBindings(myViewModel, document.getElementById('someElementId'))
。これにより、IDがsomeElementIdの要素とその子孫にアクティブ化が制限されます。これは、複数のビューモデルがあり、それぞれをページの異なる領域に関連付ける場合に便利です。
Knockoutobservablesドキュメントから
例:
function AppViewModel1(Name) {
this.firstName = ko.observable(Name.fn);
this.lastName = ko.observable(Name.ln);
}
function AppViewModel2(Name) {
this.first = ko.observable(Name.fn);
this.last = ko.observable(Name.ln);
}
ko.applyBindings(new AppViewModel1({ fn : "yahoo", ln: ".in" }),
document.getElementById('gmailArea'));
ko.applyBindings(new AppViewModel2({ fn : "gmail", ln: ".com" }),
document.getElementById('yahooArea'));
ページの同じ部分内の同じビューモデルに絶対にアクセスする必要がある場合は、すべてを1つのビューモデルにマージする必要があります。きれいではありませんが、cestlavieです。
例えば
function AppViewModel1(Name) {
this.gmailFirstName = ko.observable(Name.gmailFn);
this.gmailLastName = ko.observable(Name.gmailLn);
this.yFirst = ko.observable(Name.yFn);
this.yLast = ko.observable(Name.yLn);
}
ko.applyBindings(new AppViewModel1({ gmailFn: "google", gmialLn: ".com", yFn : "yahoo", yLn: ".in" }));
名前空間のplulginjimmymリンクは使用していませんが、興味をそそられるようです。