gpt4 book ai didi

data-binding - 绑定(bind)到链中的可观察对象可以为空的嵌套属性

转载 作者:行者123 更新时间:2023-12-04 04:10:33 27 4
gpt4 key购买 nike

我刚刚阅读了有关 KnockoutJS 的内容,当我尝试绑定(bind)到可以为 null 的对象上的子属性时,我得到了绑定(bind)错误,例如:

<div data-bind="text: selectedAccount().DocumentList().length"></div>

因此,一旦您调用 ko.applyBindings它试图评估上面的表达式,如果 selectedAccount为空(默认为空)它会引发错误。我知道我可以创建一个 dependentObservable像这样:
viewModel.docLength = ko.dependentObservable(function () { 
return selectedAccount() ? selectedAccount().DocumentList().length : null;
})

但我想知道除了将属性放入 ViewModel 之外是否还有其他解决方案,因为我遇到了绑定(bind)错误。

最佳答案

几个想法:

如果您不想打扰dependentObservable,那么您可以将语句直接放在文本绑定(bind)中,例如:

<div data-bind="text: selectedAccount() ? selectedAccount().DocumentList().length : null"></div>

甚至更短:
<div data-bind="text: selectedAccount() && selectedAccount().DocumentList().length"></div>

根据您的情况,您还可以在处理潜在的空值时使用模板绑定(bind)。它会是这样的:
<div data-bind="template: { name: 'accountTmpl', data: selectedAccount }"></div>

<script id="accountTmpl" type="text/html">
${DocumentList().length}
</script>

此外,在 Knockout 的 1.3 版本中,将有一些控制流绑定(bind)可能对您有所帮助。特别是“if”或“with”绑定(bind)适用于这种情况。它们在这里被描述: https://groups.google.com/d/topic/knockoutjs/pa0cPkckvE8/discussion

关于data-binding - 绑定(bind)到链中的可观察对象可以为空的嵌套属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6215067/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com