检查div是否绑定了视图模型

时间:2015-10-20 04:01:08

标签: knockout.js

是否有一个函数用于确定div是否绑定到视图模型。这是因为我在一个页面中有一个弹出模式对话框,它被绑定到使用javascript查看模型。因此,在我关闭模态对话框并单击它再次打开后,它将显示多个绑定错误。

1 个答案:

答案 0 :(得分:2)

如Knockout文档部分Using unobtrusive event handlers中所述,有两个帮助函数可以帮助您:

  
      
  • ko.dataFor(element) - 返回可用于绑定元素的数据
  •   
  • ko.contextFor(element) - 返回DOM元素可用的整个绑定上下文。
  •   

在您的情况下,您需要的功能是dataFor。如果此函数返回truthy值,则表示模型绑定到此元素,如果值为falsy,则没有任何内容绑定到元素

例如,您有HTML:

<div id="div1">
    <span data-bind="text: name"></span>
</div>
<div id="div2">
</div>

脚本:

var viewModel = {
    name: ko.observable('John Doe')
};
ko.applyBindings(viewModel, document.getElementById('div1'));

您有2个div元素,其中只有一个绑定到模型。您可以使用

查找绑定到元素的数据
console.log(ko.dataFor(document.getElementById('div1')));  // prints object details
console.log(ko.dataFor(document.getElementById('div2')));  // prints undefined

因此,如果您需要检查元素是否已绑定并执行某些操作,您可以使用

if(ko.dataFor(document.getElementById('div1'))){
    console.log('element is bound');
}

这是jsFiddle