检查一个div是否绑定到knockout view模型



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

如Knockout文档一节所述,使用不引人注目的事件处理程序,有两个帮助函数可能会对您有所帮助:

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

在您的情况下,您需要的功能是dataFor。如果这个函数返回真值,这意味着模型被绑定到这个元素,如果值是假的,那么没有任何东西被绑定到元素

例如,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

最新更新