javascript - 当子数组更新 UI 在淘汰赛 js 中不刷新
问题描述
我正在研究淘汰赛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 的正确方法是什么,或者至少有一种方法可以触发表示父属性已更改的事件。
解决方案
如果您希望在childArray
更改时更新 UI,那么它也需要是一个observableArray
。我还猜想你也需要制作name
一个可观察的,所以将它们都绑定在一个单独的视图模型中可能是个好主意,例如:
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", []));
推荐阅读
- html - 优化 filterpredicate 以支持数据源超过 80k 条记录的角度 mat 表
- jquery - 导航栏中的下拉菜单在 Rails 6 中不起作用
- c# - Xamarin 形式 - 获取值时,MVVM 可观察集合始终为 0
- python - 如何在 C 中制作类似于 Python 的输出函数?
- java - Java 和 C# Unity3d 之间的内存映射文件
- android - 将 SSL 证书 bye[] 数组从 jni 带到 Flutter
- ios - 如何在 iOS 14 中使用 swift 实现 CoreNFC
- django - 如何在 datefield django 中过滤 spetember?
- javascript - 注入新 HTML 的 JavaScript 函数
- 进入 HTML
- c++ - 为什么 ushort 在 VSCode 中被识别为内置类型?