Knockout.js 订阅敲除js中另一个viewmodel的值

Knockout.js 订阅敲除js中另一个viewmodel的值,knockout.js,knockout-mapping-plugin,Knockout.js,Knockout Mapping Plugin,我正在尝试将视图模型拆分为多个可重用的视图模型。 我有一个视图模型,其中包含几个下拉列表和一个按钮 var TopView = function () { self.DropDownA = ko.observableArray(); self.selectedDDA = ko.observable(); self.DropDownB = ko.observableArray(); self.selectedDDB = ko.obse

我正在尝试将视图模型拆分为多个可重用的视图模型。 我有一个视图模型,其中包含几个下拉列表和一个按钮

    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???
}
如何从我的mainview订阅DropDownA和DropDownB选择的值???
请帮忙!谢谢大家!

只要不想完全交换,就不需要让
TopView
本身可见。您只需将其创建为
MainView
的属性,并像在绑定中那样访问它:

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

只要不想完全交换,就不需要让
TopView本身可见。您只需将其创建为
MainView
的属性,并像在绑定中那样访问它:

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

您意识到您在
TopView
构造函数中使用了
self
,而没有事先将其分配给
?您意识到您在
TopView
构造函数中使用了
self
,而没有事先将其分配给