1

Knockout.js に 2 つのビュー モデルがあり、それらを個別にバインドできることは認識していますが、両方をマスター ビュー モデルに追加して一度バインドすることは可能ですか。ko.applyBindings(MasterViewModel); のようなもの どんな助けやアドバイスも大歓迎です。ありがとうございます。

  var ViewModel1 = {
        id: ko.observable(""),
        name: ko.observable("")}

var ViewModel2 = {
        id: ko.observable(""),
        name: ko.observable("")}

現在、次のようにバインドしています: ko.applyBindings(ViewModel1 , document.getElementById('div1')); ko.applyBindings(ViewModel2 , document.getElementById('div2'));

4

3 に答える 3

1

構文エラーがあることを除いて、他の回答(@PatrickD)は正しいです。はMasterViewModelオブジェクトリテラルなので、次のように記述します。

var MasterViewModel = {
    ViewModel1 : {
      id: ko.observable(""),
      name: ko.observable("")
    },
    ViewModel2 : {
      id: ko.observable(""),
      name: ko.observable("")
    }
 };
于 2013-05-24T05:05:23.270 に答える
1

確実なこと。JavaScript で:

 MasterViewModel = function() {
    this.ViewModel1 = {
      id: ko.observable(""),
      name: ko.observable("")
    }

    this.ViewModel2 = {
      id: ko.observable(""),
      name: ko.observable("")
    }
 }
 ko.applyBindings(new MasterViewModel(), document.getElementById('masterDiv'));

HTML マークアップで:

 <div id="masterDiv">
    <div id="div1">
        <strong data-bind="text: ViewModel1.name"/>
    </div>
    <div id="div2">
        <strong data-bind="text: ViewModel2.name"/>
    </div>
 </div>

データ バインディング マークアップでは、ViewModel を名前で参照する必要があります。これにより、バインドする ViewModel のプロパティを決定できます。

于 2013-05-23T15:56:24.397 に答える
-1
var MasterViewModel = {
    var ViewModel1 = {
      id: ko.observable(""),
      name: ko.observable("")
    }

    var ViewModel2 = {
      id: ko.observable(""),
      name: ko.observable("")
    }
 }

 ko.applyBindings(new MasterViewModel(), document.getElementById('masterDiv');

with バインディングを使用してマークアップを簡素化することもできます

<div id="masterDiv">
    <div data-bind="with: ViewModel1">
         <strong data-bind="text: name"/>
    </div>

    <div data-bind="with: ViewModel2">
        <strong data-bind="text: name"/>
    </div>
</div>
于 2013-05-24T05:00:58.567 に答える