1

ビュー モデルを複数の再利用可能なビュー モデルに分割しようとしています。いくつかのドロップダウンと 1 つのボタンを含む 1 つのビュー モデルがあります。

    var TopView = function () {
       self.DropDownA = ko.observableArray();
       self.selectedDDA = ko.observable();
       self.DropDownB = ko.observableArray();
       self.selectedDDB = ko.observable();

       $.getJSON("someAPIurl", function (result) {
            ko.mapping.fromJS(result, {}, self);
        });  //this builds dropdownA

        $self.selectedDDA.subscribe(function(newValue) {
            $.getJSON("anotherAPI"+newValue, function (result) {
                ko.mapping.fromJS(result, {}, self);

            });
        };  // this builds dropdownB
        $self.buttonClicked = function() {
            alert("I clicked!");
        }
}

私のメインのビューモデルは次のようになります。

var MainView = function () {
   var self = this;
   var topView = ko.observable({ TopView: new TopView() });

   // How do i get the selected values from topView once the user clicks the button???
}

メインビューから選択した DropDownA および DropDownB の値をサブスクライブするにはどうすればよいですか? 助けてください!ありがとうございました!

4

1 に答える 1

1

TopView完全に交換したくない限り、それ自体を監視可能にする必要はありません。のプロパティとして作成しMainView、バインディングで次のように簡単にアクセスできます。

<button data-bind="click:topView.buttonClicked">click me, I&#39;m a button!</button>

TopViewはそのままです (定義せずselfに使用を修正した後)$self

MainViewは次のようになります。

var MainView = function () {
   var self = this;
   self.topView = new TopView();
}

JSFiddle の例

于 2013-02-11T17:38:35.220 に答える