我正在学习Knockout.js,我有一个关于更新嵌套数据的问题,我正在做什么或者我需要重新考虑我的模型吗?
以下是视图模型中的数据:
this.menu = ko.observableArray([
{text: "one",
children: [{text: "child 1.1", checked: true},{text: "child 1.2", checked: false}]},
{text: "two",
children: [{text: "child 2.1", checked: false},{text: "child 2.2", checked: true}]},
{text: "three",
children: [{text: "child 3.1", checked: false}]}
]);
这是小提琴:
数据在最后写出,所以我们可以看到它的状态。
我希望在HTML视图中更改复选框时更新选中的值,但这不会发生。在状态变化的背后,我想采取一些行动。在这种情况下,操作将是在图表中显示数据系列(仍然要执行该部分)。
提前致谢, 马特
答案 0 :(得分:3)
您的示例中的问题是您使数组可观察,但单个属性是不可观察的。
您需要将每个“已检查”属性设置为ko.observable才能更新。
像这样:
this.menu = ko.observableArray([
{text: "one",
children: [{text: "child 1.1", checked: ko.observable(true)},{text: "child 1.2", checked: ko.observable(false)}]},
{text: "two",
children: [{text: "child 2.1", checked: ko.observable(false)},{text: "child 2.2", checked: ko.observable(true)}]},
{text: "three",
children: [{text: "child 3.1", checked: ko.observable(false)}]}
]);
如果你想要文本也是可观察的,你也必须包装它:ko.observable(“child 1.1”)