gpt4 book ai didi

javascript - Knockout JS 仅使复杂对象数组的一个属性可观察

转载 作者:行者123 更新时间:2023-12-03 07:53:52 24 4
gpt4 key购买 nike

我正在使用 $.getJson 从服务器调用 (C#) 构建 observableArray。我的数组是由复杂对象列表构建的。复杂对象有简单属性和数组属性。我只想使对象的一个​​属性( bool 值)可观察,但我仍然希望能够从 UI 访问其他属性(但是其他属性不会改变,所以我不希望它们可观察)。目前,我只是根据从服务器获取的数据填充我的 observableArray。有没有一种方法可以创建该属性的可观察对象???

function viewModel()
{
var self = this;
self.documents = ko.observableArray();

$.getJSON("/getdocuments", function (data) {
return self.documents(data);
});

}

ko.applyBindings(new viewModel());

最佳答案

你可以这样做:

  1. 添加单独的对象构造函数,该函数将使用您需要的可观察属性构建每个对象:

    var ObjectModel = function(config) {
    this.prop1 = config.prop1;
    ...
    this.propO = ko.observable(config.propO);
    }
  2. 在成功的 ajax 回调中迭代您获得的对象配置并将它们提供给该对象构造函数,然后添加到主视图模型中的数组:

    $.getJSON("/getdocuments", function (data) {
    var arr = [];

    data.forEach(function(objectCfg){
    arr.push( new ObjectModel(objectCfg) );
    })
    self.documents( arr );
    }

关于javascript - Knockout JS 仅使复杂对象数组的一个属性可观察,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34883286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com