【问题标题】:When child array updates UI does not refresh in knockout js当子数组更新 UI 在淘汰赛 js 中不刷新
【发布时间】:2020-06-23 14:47:19
【问题描述】:

我正在研究淘汰赛 js。我有一个可观察的数组对象,例如

视图模型 () {

self.myObservableArray = ko.observableArray();


}

在一些 asyc api 调用之后,我会像这样更新数组

self.myObservableArray().push({
    "name" : "Some name",
    "childArray" : []
});

在第二次 aync api 调用之后,我将不得不遍历响应并在每个循环中将一个项目推送到 childArray 中。

self.myObservableArray()[0]. childArray.push({
        "childName" : "name " + $index
    })

但是当我更新二级数组时 UI 不会刷新。添加元素的正确方法是什么,以便 UI 刷新或至少有一种方法可以触发表示父属性已更改的事件。

【问题讨论】:

  • 我的回答是否帮助您解决了问题?如果是这样,请通过勾选左侧的 V 符号将我的答案标记为已接受。如果没有,请告诉我,我会尽力为您提供进一步的帮助。

标签: javascript arrays knockout.js


【解决方案1】:

如果您希望在更改 childArray 时更新 UI,那么它也需要是 observableArray。我还猜想您也需要将 name 设为 observable,因此将它们都绑定在单独的视图模型中可能是个好主意,例如:

var childViewModel = function (name, items) {
   var self = this;
   self.name = ko.observable(name);
   self.childArray = ko.observableArray(items);
}

self.myObservableArray.push(new childViewMode("Some name", []));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-12
    • 2013-07-06
    • 2014-10-30
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    相关资源
    最近更新 更多