2015-10-20 71 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