1

ページのモデルバインディングを更新したい。ドキュメントにあるように、私はapplyBindingsメソッドを使用します。また、ページでいくつかのviewModelを使用する必要があります。これを行うには、バインディングでobject-wrapper+"with"キーワードを使用します。

ko.applyBindings({ model1: {...}, model2: {...} });

<div data-bind="with: $root.model1"> ... </div>
<div data-bind="with: $root.model2"> ... </div>

動的バインディングの更新を使用しないまでは正常に機能します。ページにビューモデルを追加しようとすると、機能しません:(

いくつかのコード:

1)正常に動作します:

$("#b1").click(function () {
ko.applyBindings({
    myModel1: {
        MyText: ko.observable("Some text")
    },
    myModel2: {
        MyText: ko.observable("Some text")
    }
});

});

$("#b2").click(function () {
    ko.applyBindings({
        myModel1: {
            MyText: ko.observable("Some other text")
        },
        myModel2: {
            MyText: ko.observable("Some other text 2")
        }
    });
});

2)機能しない:

$("#b1").click(function () {
ko.applyBindings({
    myModel1: {
        MyText: ko.observable("Some text")
    }
});

});

$("#b2").click(function () {
    ko.applyBindings({
        myModel1: {
            MyText: ko.observable("Some other text")
        },
        myModel2: {
            MyText: ko.observable("Some other text 2")
        }
    });
});

私が理解しているように、このような方法で追加のビューモデルをバインドする方法はありません。「ko.cleanNode()」メソッドも使おうとしましたが、うまくいきません。http://jsfiddle.net/eN8dq/2/に保存されているコードの完全なサンプル

ページにビューモデルを追加する方法を教えてください。ありがとうございました!

4

2 に答える 2

2

バインドを強制しないようにしてください。ただし、すでにバインドされているモデルの値を変更してください。

var viewModel = function () {
    var self = this;

    self.myModel1 = ko.observable( {
        MyText: ko.observable("Some other text")
    });

    self.myModel2 = ko.observable({
        MyText: ko.observable("Some other text 2")
    });


    self.clickAction = function() {
        //do the trick of assigning value
        self.myModel1 ({
            MyText: ko.observable("Some another text")
        });
    };
};

ko.applyBindings(new viewModel());   
于 2012-06-27T11:56:02.673 に答える
1

この場合の私の解決策:https ://github.com/sergun/Knockout-MultiModels

コメントはありますか?

于 2012-06-27T15:56:25.453 に答える