1
是否有一個函數用於確定div是否綁定淘汰視圖模型。這是因爲我在頁面中有一個彈出式模式對話框,使用javascript來點擊查看模型。因此,在關閉模式對話框並單擊它再次打開後,它會顯示多個綁定錯誤。檢查一個div是否綁定到淘汰視圖模型
是否有一個函數用於確定div是否綁定淘汰視圖模型。這是因爲我在頁面中有一個彈出式模式對話框,使用javascript來點擊查看模型。因此,在關閉模式對話框並單擊它再次打開後,它會顯示多個綁定錯誤。檢查一個div是否綁定到淘汰視圖模型
正如在淘汰賽文檔部分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
這些如果父元素與Knockout綁定,可以給出* false positive *。因此,除了檢查真值之外,最好檢查它是您期望的視圖模型對象。 –
@MichaelBest這是一個很好的觀點,然而這取決於應用程序的邏輯。如果你只想知道元素是否被綁定,那麼檢查真值就足夠了,如果你需要確保對象是你所期望的 - 你需要驗證 – dotnetom