我已经发现,如果计算出的可观测值被设置为某个值,然后重新计算并返回null,那么前面的计算值将被用于绑定/ GUI没有更新。这似乎很奇怪,我想问一下,我是做错了什么,还是这是预期的行为?
一个例子(http://jsfiddle.net/LkqTU/18081/):
我使用可观察到的计算值来返回css绑定中使用的类名。绑定可以是类名,也可以没有类。模板:
<p data-bind="css: textColour">Coloured text</p>可观察到的计算值首先计算为“绿色”,彩色文本变为绿色(我已经为类“green”定义了css )。当计算出的可观测值重新评估并返回null时,文本颜色却保持绿色。
that.success = ko.observable(true);
that.textColour = ko.computed(function() {
if (that.success()) {
return 'green';
} else {
return null;
}
});我返回null以从绑定中删除该类。为什么这个不行?我已经发现,如果我返回undefined,或者完全不返回(也是undefined),绑定将按预期更新并删除绿色。
这个问题并没有阻碍我前进,但却在质疑我对KO的理解。有人能解释一下这件事吗?
发布于 2014-07-23 01:11:41
这可能被认为是绑定中的一个错误。我建议你在吉特布上发表一个关于它的问题:https://github.com/knockout/knockout
另一个解决方法是返回一个空字符串。
that.textColour = ko.computed(function() {
if (that.success()) {
return 'green';
} else {
return '';
}
});https://stackoverflow.com/questions/24900254
复制相似问题