我有主视图模型,其子模型在同一页面上使用。我想在按钮点击时加载一些隐藏的子视图。这不是那样的工作:
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>
答案 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>