KnockOutJS在嵌套数组中插入数据

时间:2019-07-11 01:46:27

标签: knockout.js

我想将数据插入嵌套数组。 JSON对象的结构如下:

Data: {
    MembershipName:
    Countries: {
                CountryName: "USA"
                States:
                                {
                                  State: "Alabama"
                                       {
                                          Members: {}
                                       } 
                                }
       }
}

我尝试使用下面的push函数,是在控制台中对其进行调试时添加的,但我的View并未更新。

self.Data()[0]["Countries"].push(
            {
            "CountryName": 'Success!'
            }
        );

我想专门为此特定索引添加到Countrys数组(我将索引用于0)。有没有有效的方法来实现这一目标?

2 个答案:

答案 0 :(得分:1)

您的数据结构不是很清楚,似乎数据是一个对象(但是您使用[0]进行了遍历),国家/地区是另一个对象(但您想像数组一样推送一个新值)。

也许您考虑过这种数据结构:

Data: {
    MembershipName: {},
    Countries: [
        {
            CountryName: "USA",
            States: [
                { 
                    State: "Alabama",
                    Members: []
                }
            ]
        }
    ]
}

在这种情况下,您可以使用以下方法推送新的国家/地区:

self.Data().Countries.push({ /* new country data */ });

答案 1 :(得分:0)

我已经通过以下操作解决了这个问题:

self.Data()[index].Countries.push(
            new countriesModel(
                {
                    'CountryName': selectedCountry()
                }
            )
        );