2014-03-19 49 views
0

我遇到以下問題。我想從模型內部獲取綁定的ID。我知道可能很難理解我想要什麼(或者我可能會用錯誤的詞語),所以這裏是一個例子。我可以從模型中獲取綁定元素的id嗎?

ko.applyBindings(new Model, document.getElementById('myID')); 

function ErrorViewModel() { 
    this.foo = function(){ 
     // do something to output myID 
    } 
} 

閱讀文檔和快速使用谷歌搜索後,我無法找到任何東西。可能嗎?

+1

你能否澄清一下「做什麼」是? knockout的一個關鍵點是避免DOM操作(分離視圖和視圖模型)。通常,有一個「淘汰賽」 - 避免DOM操作的事情。 – PatrickSteele

+0

其實我想隱藏元素。感謝您查看問題。 –

+0

如果你一開始就知道'myID',爲什麼你想把它放在模型中?爲什麼不把它存儲在全球? –

回答

1

如果你只想隱藏一個元素,創建一個可觀察將包含布爾標誌,並將其與「看得見的」綁定綁定到你的DOM元素:

注意:這不是一個完整的視圖模型,設置您的觀測只是示例代碼:

this.isError = ko.observable(false); 

<div data-bind='visible: isError'> 
    Error message 
</div> 

現在,每當「ISERROR」標誌被設置爲true,出現錯誤信息。當它是假的時候,它是隱藏的。你甚至可以通過添加另一個觀察到的變化消息:

this.isError = ko.observable(false); 
this.errorMessage = ko.observable('Error Message'); 

<div data-bind='visible: isError, text: errorMessage'> 
</div> 

現在,您只需設置您的錯誤消息(this.errorMessage('Name is too short')),並與this.isError(true)顯示。

相關問題