我有一个聚合视图,它在knockout中组合了多个视图(类似于局部视图,主视图允许我访问视图模型而不管视图页面如何)。有没有办法在淘汰赛中引用另一个视图中的属性?我有一个输入框,我想在一个VM中激活ajax请求,但我还需要它在另一个虚拟机中触发请求。我知道我可以在一个VM中将它们链接在一起,但如果我不需要,我不想显式引用一个单独的VM。
主视图的格式为
function AggregateViewModel() {
var self = this;
self.vm1= new FirstViewModel();
self.vm2= new SecondViewModel();
self.vm3= new ThirdViewModel();
}
我想绑定类似于
的输入<input data-bind="click: vm1.inputValue, click: vm2.inputValue">
这样我就可以在同一个点击事件中触发两个ajax事件。
感谢您提供任何帮助/意见
答案 0 :(得分:2)
您无法绑定两个点击处理程序,第二个将首先覆盖。但是你可以在你的视图模型上聚合它们:
function AggregateViewModel() {
var self = this;
self.vm1 = {
handleClick: function () {
console.log('vm1');
}
};
self.vm2 = {
handleClick: function () {
console.log('vm2');
}
};
self.vm3 = {};
self.handleClick = function () {
console.log('Wrapper');
self.vm1.handleClick();
self.vm2.handleClick();
};
}
并绑定到该单个函数:
<input type="button" value="test" data-bind="click: handleClick" />
启用控制台后,请参阅JSFIDDLE。