2014-03-19 50 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)显示。

相关问题