Knockout.js 观察\更新可观察范围内的数据

Knockout.js 观察\更新可观察范围内的数据,knockout.js,Knockout.js,我正在学习Knockout.js,我有一个关于更新嵌套数据的问题,我正在做的是可能的还是需要重新考虑我的模型 以下是视图模型中的数据: this.menu = ko.observableArray([ {text: "one", children: [{text: "child 1.1", checked: true},{text: "child 1.2", checked: false}]}, {text: "two", children: [{

我正在学习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视图中更改复选框时更新选中的值,但这不会发生。在状态变化的背后,我想采取一些行动。在这种情况下,操作将是在图形中显示一个数据系列(仍然要执行该部分)

提前感谢,,
Matt

示例中的问题是,您使阵列可见,但单个属性不可见

您需要使每个“选中”属性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”)

太棒了,谢谢。我的目的是让数据来自JSON AJAX,所以我想我必须看一下这方面的映射。