knockout.js - knockout 每个 observableArray 似乎不适用于对象数组

标签 knockout.js

我不确定为什么我的 foreach 部分不起作用?第一个数据绑定(bind)文本:虽然 Id 正在工作。

knockout :

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);
});

HTML:

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

返回的 JSON:

enter image description here

最佳答案

问题出在带有第一个 text 绑定(bind)的 html 中,因为它替换了顶级 div 元素的全部内容,并且您丢失了 foreach。

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

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

如果您不喜欢额外的 div,则可以使用无容器绑定(bind)语法:

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

关于knockout.js - knockout 每个 observableArray 似乎不适用于对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34892519/

相关文章:

javascript - 如果该元素曾经被隐藏,我的 jQuery UI 日期选择器将不会显示

javascript - 如果某些 <tr> 不可见,则交替行颜色

knockout.js - 如何 : redactor. js Knockout.js Binder

javascript - knockout : Make observable object from array

javascript - 将挖空 View 模型绑定(bind)到 Bootstrap Tree View

jquery-mobile - knockout 刷新 html 中的 observableArray

jquery - knockout 模板名称构建

javascript - 尝试从可观察数组中获取特定元素

javascript - knockout 高级声明 javascript "with"-like

组合字符串文字和对象值时 Knockout.js attr 错误