在这种情况下,我正在寻找淘汰或最佳实践:
<div data-bind="visible: $root.obsVar()">
...
<input type="text" data-bind="value: $root.obsVar().someField" />
...
</div>
如果未定义
$root.obsVar()
,将引发错误。如果将visible
更改为if
,将不会出现问题,但是需要重写html。如果div
中有很多murkup,那么将花费很多时间。是否有任何理由将$root.obsVar().someField
更改为始终返回正确值或未定义的$root.getSomeFieldValue
?也许还有其他技术不会增加开销并避免错误。 最佳答案
这实际上取决于情况。从docs:
在您的方案中,如果if
为null,则不使用someField
来防止错误的唯一方法是按照以下步骤进行操作:
data-bind="value: ($root.obsVar() == null) ? null : $root.obsVar().someField"
每次访问属性时都必须写,这确实很烦人。这使代码更难维护,并且更容易犯错误-特别是在向
obsVar
的属性添加新绑定(bind)时,因为您必须记住要执行空检查。除非您发现在这种情况下使用
visible
可以带来明显的性能优势,否则我建议您使用if
,因为这样一来,您只需要在一个地方而不是多个地方写支票即可。关于javascript - knockout 最佳做法。如果或可见,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30087783/