什么时候我应该在淘汰赛中使用括号

Tim*_*Tom 29 javascript jquery knockout.js

我是Knockout的初学者,我必须说我经常对何时使用感到困惑().是否有任何一般的提示/技巧,当你()不愿意使用时,因为目前我正在进行反复试验.如果绑定抛出错误或不更新值,我删除()其他我放.

Kye*_*ica 53

我觉得现有的答案会跳过一个非常重要的混乱点:data-bind属性.

确实,当您使用Javascript时,您可以使用parens,并获取或设置observable.但是当你写作时data-bind="text: property",即使与可观察者一起工作,你也会遗漏这些内容.

编辑

如下面的注释所述,作为表达式的绑定或observbles的访问属性需要parens

visible: personName().length > 0
visible: person().Name().length > 0
visible: person().isVisible
Run Code Online (Sandbox Code Playgroud)

需要注意的是最后一个personisVisisble都是观测的,但最后一个属性不使用括号!这样做的原因是我们将一个值传递给绑定而不是一个observable,它不会更新.

  • 好的,唯一的例外是如果在data-bind属性中使用JavaScript表达式,在这种情况下,括号**是**,例如`visible:personName().length> 0 (5认同)

Nop*_*ope 21

()在使用observable或执行任何其他方法时,您可以在knockout中使用.Knockout observables是函数,用于返回您要查找的内容或允许您分配新值.

在淘汰赛中,您使用object.property()检索值并object.property(newValue)为该属性分配值.

在淘汰网站上查看文档,特别是关于observables的部分,它向您展示了()查询和编写可观察对象时的使用.

报价:

var myViewModel = {
    personName: ko.observable('Bob'),
    personAge: ko.observable(123)
};
Run Code Online (Sandbox Code Playgroud)
  • 要读取observable的当前值,只需调用没有参数的observable.在此示例中,myViewModel.personName()将返回"Bob",myViewModel.personAge()将返回123.

  • 要向observable写入新值,请调用observable并将新值作为参数传递.例如,调用myViewModel.personName('Mary')会将名称值更改为"Mary".

  • 要将值写入模型对象上的多个可观察属性,可以使用链接语法.例如,myViewModel.personName('Mary').personAge(50)会将名称值更改为"Mary",将年龄值更改为50.

Knockout的互动教程也非常好,非常值得一试.