【问题标题】:Observable array from another JSON object with child arrays来自另一个带有子数组的 JSON 对象的可观察数组
【发布时间】:2013-12-21 12:48:21
【问题描述】:

我正在尝试从从服务器呈现为 Javascript/Json 的 json 对象初始化可观察数组;

基本上我有一个看起来像这样的简单模型(来自服务器)

    var BaseModel = { "changeRequestLocations": 
             [{ "location": "New Zealand", "devices": 
                      [
                        { "id": "5", "deviceName": "Server 1" },  
                        { "id": "6", "deviceName": "Server 2" }
                      ],
              "id": 1 }] };

然后我从 baseModel 初始化一个 observable 数组

    this.changeRequestLocations = ko.observableArray(BaseModel.changeRequestLocations);

这基本上可以满足我的要求,但“设备”元素是 array 而不是 observable array

我真的需要将它作为一个可观察的数组 - 有没有办法告诉 Knockout 自动执行此操作还是我需要手动执行此操作?

See a fiddle here that shows the case

【问题讨论】:

    标签: arrays json knockout.js observable


    【解决方案1】:

    Knockout 本身不会自动为您执行此操作,因此

    • 您像 jsfiddle 一样手动操作
    • 您使用专为此场景设计的Knockout.Mapping plugin:将纯 JavaScript 对象转换为具有可观察属性的对象。

    所以在你的例子中你只需要写:

    this.changeRequestLocations = ko.mapping.fromJS(BaseModel.changeRequestLocations);
    

    映射插件会将您的 location 数组转换为可观察数组。

    演示JSFiddle.

    【讨论】:

    • 非常感谢 - 这正是我所需要的。
    猜你喜欢
    • 1970-01-01
    • 2019-09-09
    • 2019-05-12
    • 1970-01-01
    • 2023-04-08
    • 2016-01-21
    • 2016-06-23
    • 2012-04-20
    • 1970-01-01
    相关资源
    最近更新 更多