我是 Knockout 的初学者,我必须说我经常对何时使用()
. 是否有任何关于何时使用的一般提示/技巧,()
因为目前我只是在反复试验。如果绑定抛出错误或不更新值,我将删除()
其他内容。
3 回答
我觉得现有的答案跳过了一个非常重要的混淆点:data-bind
属性。
确实,当您使用 Javascript 并获取或设置可观察对象时,您会使用括号。但是当你写作时,即使在使用 observables 时data-bind="text: property"
,你也忽略了括号。
编辑
正如下面的评论中所指出的,作为表达式的绑定,或 observble 的访问属性,需要括号
visible: personName().length > 0
visible: person().Name().length > 0
visible: person().isVisible
请注意,最后一个person
和isVisisble
都是可观察的,但最后一个属性不使用括号!这样做的原因是我们将值传递给绑定而不是可观察对象,并且它不会更新。
()
在使用 observables 或执行任何其他方法时,您可以在淘汰赛中使用。Knockout observables 是函数,被调用以返回您正在寻找的内容或允许您分配新值。
在淘汰赛中,您使用object.property()
检索值并将object.property(newValue)
值分配给该属性。
在淘汰网站上查看文档,特别是observables部分,它向您展示了()
在查询和编写 observables 时的使用。
去引用:
var myViewModel = {
personName: ko.observable('Bob'),
personAge: ko.observable(123)
};
要读取 observable 的当前值,只需调用不带参数的 observable。在此示例中,myViewModel.personName() 将返回 'Bob',而 myViewModel.personAge() 将返回 123。
要将新值写入可观察对象,请调用可观察对象并将新值作为参数传递。例如,调用 myViewModel.personName('Mary') 会将名称值更改为 'Mary'。
要将值写入模型对象上的多个可观察属性,您可以使用链接语法。例如,myViewModel.personName('Mary').personAge(50) 会将姓名值更改为 'Mary' 并将年龄值更改为 50。
Knockout 的交互式教程也很不错,值得一读。
基本上,每当您使用可观察值(数组或其他)时,您都应该使用括号来获取值并设置值。
var something = ko.obserbable();
something(5); //set value
console.log(something()); //get value: 5
原因是大多数 JS 实现还不支持属性的 getter 和 setter,所以 observables 是这样实现的以绕过这个限制。