【问题标题】:Updating KnockoutJS associative observableArray values更新 KnockoutJS 关联 observableArray 值
【发布时间】:2013-04-03 18:49:39
【问题描述】:

这应该很简单。

我有一个带有名称和布尔值的关联可观察数组。

this.items = ko.observableArray([
    { name: "name1", boolVal: true },
    { name: "name2", boolVal: true },
]);

然后是一个简单的函数来改变 boolVal。

this.changeValue = function (item) {
    item.boolVal = false;
};

当我调用 changeValue 函数时,boolVal 确实发生了变化(请参阅我的 jsfiddle 中的 console.log(data)),但视图没有更新。屏幕上的值保持“真”。我必须对 KnockoutJS 的工作方式做出错误的假设。

JS Fiddle Link

【问题讨论】:

    标签: javascript knockout.js associative-array


    【解决方案1】:

    为了 KO 更新 UI,您需要有可观察的属性:

    this.items = ko.observableArray([
        { name: "name1", boolVal: ko.observable(true) },
        { name: "name2", boolVal: ko.observable(true) },
    ]);
    

    并将其设置为:

    this.changeValue = function (item) {
        item.boolVal(false);
    };
    

    ko.observableArray 仅跟踪项目的添加和删除。因此,如果其中一项发生更改,它不会通知 UI。为此,您需要在项目上添加ko.observable

    演示JSFiddle.

    【讨论】:

    • 没想到这一点,但很有道理。谢谢!
    • 这个答案没有回答关于让“关联”数组可观察的问题。这只是一个标准数组。
    猜你喜欢
    • 2013-02-02
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多