我在每个div中都有两个嵌套的div和2个按钮:
<div id="d1">
<button data-bind="click:x">
invoke x
</button>
<div id="d2">
<button id="Q_btn" data-bind="click:x">
invoke x
</button>
</div>
</div>
和2视图模型绑定为:
var viewModel1 = {
x : function() {
alert('from model1')
}
}
var viewModel2 = {
x : function() {
alert('from model2')
}
}
ko.applyBindings(viewModel2, document.getElementById('d2'));
ko.applyBindings(viewModel1, document.getElementById('d1'));
现在当我点击d2(Q_btn)内的按钮时,2提醒,第一个显示'来自mode2',第二个显示'来自model1'。 我希望当我点击Q_btn时,只有第一个警报发生。
注意:在我的项目中,我在div上加载了一些html页面。每个div都有自己的视图模型。到现在为止每个人都可以(每个div都有自己的viewmodel并且不会发生冲突)但是在嵌套div的情况下会出现上述问题。
感谢您的帮助
答案 0 :(得分:0)
我认为没有任何方法按照你的建议方式做你想做的事。我建议你在这里实现一个发布者/订阅者模式,或者自己滚动(使用像jquery.pubsub这样的东西),或者你可以使用一个名为knockout-postbox的扩展名。
这样可以让您的视图模型很好地分离,但允许它们相互通信。