【发布时间】:2015-05-18 22:58:38
【问题描述】:
假设我有一个这样的 viewModel:
function ViewModel() {
var $t = this;
this.a = ko.observable(5);
this.f = function(val) {
return $t.a() * (val === 'simple' ? 2: 10);
};
this.c = ko.computed(function() {
return $t.a() * 20;
});
};
ko.applyBindings(new ViewModel());
和这样的 HTML:
<div><input data-bind="value: a"/></div>
<div data-bind="text: f('simple')"></div>
<div data-bind="text: f('complex')"></div>
<div data-bind="text: c"></div>
这会导致这个初始页面([5] 描述了一个输入字段):
[5]
10
50
100
当我将输入字段中的 5 更改为 10 时,我看到:
[10]
20
100
200
所以绑定起作用了。在此处查看工作演示:http://jsfiddle.net/1vrz71fs/2/。
我想了解的是使用 ko.computed(...) 和普通旧函数之间的区别,它们似乎都可以正常工作。使用其中一个是否有缺点/优点。函数方法似乎更方便,因为它接受 ko.computed 不允许我做的参数...
【问题讨论】: