【发布时间】:2014-09-14 00:48:23
【问题描述】:
我发现如果计算的 observable 设置为某个值,然后重新评估并返回 null,则先前的计算值正在用于绑定/GUI 没有更新。这似乎很奇怪,我想问一下我是否做错了什么,或者这是否是预期的行为?
一个例子(http://jsfiddle.net/LkqTU/18081/):
我正在使用计算的 observable 来返回 css 绑定中使用的类名。绑定可以是类名或根本没有类。模板:
<p data-bind="css: textColour">Coloured text</p>
计算的 observable 首先计算为“green”,彩色文本变为绿色(我已经为“green”类定义了 css)。当计算出的 observable 重新计算并返回 null 时,文本颜色仍然是绿色。
that.success = ko.observable(true);
that.textColour = ko.computed(function() {
if (that.success()) {
return 'green';
} else {
return null;
}
});
我返回 null 以从绑定中删除该类。为什么这不起作用?我发现如果我返回undefined,或者什么都不返回(还有undefined),绑定会按预期更新并且绿色会被移除。
这个问题并没有阻碍我前进,而是质疑我对 KO 的理解。任何人都可以对此有所了解吗?
【问题讨论】:
标签: knockout.js