2015-10-20 48 views
1

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

回答

2

正如在淘汰赛文档部分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元素,只有其中的一个必然的典范。你可以发现,通过使用

​​

所以,如果你需要检查是否元素绑定,并执行一些动作绑定到一个元素的数据,你可以使用

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

这里是jsFiddle

+0

这些如果父元素与Knockout绑定,可以给出* false positive *。因此,除了检查真值之外,最好检查它是您期望的视图模型对象。 –

+0

@MichaelBest这是一个很好的观点,然而这取决于应用程序的逻辑。如果你只想知道元素是否被绑定,那么检查真值就足够了,如果你需要确保对象是你所期望的 - 你需要验证 – dotnetom