【发布时间】:2017-10-20 06:30:57
【问题描述】:
我有以下代码,我很困惑为什么第二个警报显示第一个视图模型 (vm1) 而不是第二个 (vm2)?
<div id="main">
<div data-bind="testBinding: vm1"></div>
<div data-bind="testBinding: vm2"></div>
</div>
<script>
function vm1() {
this.firstName = "test first name"
}
function vm2() {
this.lastName = 'test last name';
}
ko.bindingHandlers.testBinding = {
init: function(element, valueAccessor, allBindings, viewModel,
bindingContext) {
alert(JSON.stringify(bindingContext.$data))
},
};
ko.applyBindings(new vm1(), document.getElementById('main'));
</script>
【问题讨论】:
-
因为您在应用绑定时从 vm1
new vm1()创建了视图模型。 -
@M.Ihsan 这不应该没关系,因为我正在寻找主 div 中的所有绑定,对吧? stackoverflow.com/questions/18990244/…
-
没错,您正在查看主 div 中的所有绑定。但是你没有绑定vm2,这就是为什么你在那里看不到它的原因。看看我下面的答案。