Jos*_*ose 7 data-binding knockout.js
我刚刚阅读了KnockoutJS,当我尝试绑定到可以为null的对象的子属性时,我得到绑定错误,例如:
<div data-bind="text: selectedAccount().DocumentList().length"></div>
Run Code Online (Sandbox Code Playgroud)
所以一旦你调用ko.applyBindings它试图评估上面的表达式,如果selectedAccount是null(它是默认情况下)它会抛出一个错误.我知道我可以这样创造dependentObservable:
viewModel.docLength = ko.dependentObservable(function () {
return selectedAccount() ? selectedAccount().DocumentList().length : null;
})
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有一个解决方案,除了在ViewModel中放置属性只是因为我得到一个绑定错误.
RP *_*yer 15
几个想法:
如果您不想使用dependentObservable,那么您可以将语句直接放在文本绑定中,如:
<div data-bind="text: selectedAccount() ? selectedAccount().DocumentList().length : null"></div>
Run Code Online (Sandbox Code Playgroud)
甚至更短:
<div data-bind="text: selectedAccount() && selectedAccount().DocumentList().length"></div>
Run Code Online (Sandbox Code Playgroud)
根据您的场景,您还可以在处理潜在的空值时使用模板绑定.它会是这样的:
<div data-bind="template: { name: 'accountTmpl', data: selectedAccount }"></div>
<script id="accountTmpl" type="text/html">
${DocumentList().length}
</script>
Run Code Online (Sandbox Code Playgroud)
此外,在Knockout的1.3版本中,将会有一些控制流绑定可能对您有所帮助.特别是"if"或"with"绑定适用于这种情况.它们在此处描述:https: //groups.google.com/d/topic/knockoutjs/pa0cPkckvE8/discussion
| 归档时间: |
|
| 查看次数: |
7402 次 |
| 最近记录: |