【问题标题】:Computed Observable set to null doesn't update GUIComputed Observable 设置为 null 不会更新 GUI
【发布时间】: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


    【解决方案1】:

    这可能被认为是绑定中的错误。我建议你在 Github 上打开一个关于它的问题:https://github.com/knockout/knockout

    另一种解决方法是返回一个空字符串。

    that.textColour = ko.computed(function() {
        if (that.success()) {
            return 'green';
        } else {
            return '';
        }
    });
    

    【讨论】:

    猜你喜欢
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    • 2015-07-19
    • 2018-05-26
    相关资源
    最近更新 更多