无法初始化后期绑定淘汰赛

时间:2014-10-22 14:46:33

标签: knockout.js

我有主视图模型,其子模型在同一页面上使用。我想在按钮点击时加载一些隐藏的子视图。这不是那样的工作:

function mainViewModel() {

        var self = this;

        self.moduleIn = createSubViewModel(moduleViewModel);
        self.module1 = ko.observable();

        // this module will loaded after menu click
        self.loadModule1 = function() {
           // create only first attempt
           if (typeof self.module1 == 'function') {
                 self.module1 = createSubViewModel(module1ViewModel);
           }
        }
}

ko.applyBindings(new mainViewModel);

这是动作按钮

<div data-bind="click: loadModule1.bind($data)">Module 1</div>

我的目标是填写此观点,但没有变化吗?

<div  data-bind="with: module1">
...
</div>

1 个答案:

答案 0 :(得分:1)

module1 是一个可观察的,所以你必须适当地设置它,你要覆盖它。

function mainViewModel() {

        var self = this;

        self.moduleIn = createSubViewModel(moduleViewModel);
        self.module1 = ko.observable();

        // this module will loaded after menu click
        self.loadModule1 = function() {
           // create only first attempt
           if (typeof self.module1 == 'function') {
                // setting module1
                 self.module1(createSubViewModel(module1ViewModel));
           }
        }
}

还不确定您要使用 data-bind =&#34;点击:loadModule1.bind($ data)&#34; 来完成什么。您可以将loadModule1绑定到click事件。

<div data-bind="click: loadModule1">Module 1</div>


<div  data-bind="with: module1">
...
</div>