Knockout.js 每个observableArray的敲除似乎不适用于对象数组

Knockout.js 每个observableArray的敲除似乎不适用于对象数组,knockout.js,Knockout.js,我不知道为什么我的foreach部分不工作?第一个数据绑定文本:Id正在工作 淘汰赛: import Knockout from 'knockout'; function ViewModel() { var self = this; self.Id = ko.observable(); self.Sections = ko.observableArray(); }; var viewModel = new ViewModel(); ko.applyBindings(

我不知道为什么我的foreach部分不工作?第一个数据绑定文本:Id正在工作

淘汰赛:

import Knockout from 'knockout';

function ViewModel() {
    var self = this;
    self.Id = ko.observable();
    self.Sections = ko.observableArray();
};

var viewModel = new ViewModel();

ko.applyBindings(viewModel);

$.getJSON("/api/projects/3455", function(data) {
    console.log(data);
    viewModel.Id(data.Id);
    viewModel.Sections(data.Sections);
});
<div data-bind="text: Id">
    <div data-bind="foreach: Sections">
        <div data-bind="text: Id"></div>  
    </div>
</div>
HTML:

import Knockout from 'knockout';

function ViewModel() {
    var self = this;
    self.Id = ko.observable();
    self.Sections = ko.observableArray();
};

var viewModel = new ViewModel();

ko.applyBindings(viewModel);

$.getJSON("/api/projects/3455", function(data) {
    console.log(data);
    viewModel.Id(data.Id);
    viewModel.Sections(data.Sections);
});
<div data-bind="text: Id">
    <div data-bind="foreach: Sections">
        <div data-bind="text: Id"></div>  
    </div>
</div>

返回的JSON:

import Knockout from 'knockout';

function ViewModel() {
    var self = this;
    self.Id = ko.observable();
    self.Sections = ko.observableArray();
};

var viewModel = new ViewModel();

ko.applyBindings(viewModel);

$.getJSON("/api/projects/3455", function(data) {
    console.log(data);
    viewModel.Id(data.Id);
    viewModel.Sections(data.Sections);
});
<div data-bind="text: Id">
    <div data-bind="foreach: Sections">
        <div data-bind="text: Id"></div>  
    </div>
</div>

问题在于html中的第一个
文本
绑定,因为它替换了顶级
div
元素的全部内容,而您失去了foreach

因此,您需要将文本绑定移动到顶部div中:

<div>
    <div data-bind="text: Id"></div>
    <div data-bind="foreach: Sections">
        <div data-bind="text: Id"></div>  
    </div>
</div>

哦,很好,这是问题帖子中不可预测的视图代码。然而,即使我也期望您所建议的行为,似乎也没有覆盖顶级
Id
的内容。有什么想法吗?@Jeroen最初你的身份证上有什么并不重要。KO文本绑定“使用您的参数值将元素的内容设置为文本节点。任何以前的内容都将被覆盖。”因此,当您调用
KO时,内部元素将丢失。applyBindings
啊,是的,您是对的,我没有正确解释我自己的示例。我的错<代码>s/松动/丢失/