如何动态创建数据模型

时间:2014-10-09 04:59:40

标签: javascript

我在javascript中从服务器获得了这个Json数据

var mydata = JSON.parse('["X","Y","Z"]');

下面我在javascript中有以下数据模型..

var mySchemasList = {
    schemas: [new SelectSchemaModel("A", false),
              new SelectSchemaModel("B", false),
              new SelectSchemaModel("C", false)
             ]
};

我想通过从mydata获取数据('A','B','C')来动态创建此模型。

真心感谢任何帮助。

由于

2 个答案:

答案 0 :(得分:1)

你不能只做以下事情吗?

var i
var mySchemaList = {schemas:[]}; 
for (i = 0; i < mydata.length; i++) {
    mySchemaList.schemas.push( new SelectSchemaModel(mydata[i], false) );
}

答案 1 :(得分:1)

在javascript中,使用.[]运算符访问对象和数组。以下两行完全相同:

mySchemasList.schemas;
mySchemasList['schemas'];

此外,对象或数组的每个成员本身就像一个变量。因此,您可以为它们分配值,对象或数组:

mySchemasList = {};

当声明变量(或属性)但未赋值时,其值为undefined。所以你可以简单地检查:

if (mySchemasList === undefined) mySchemasList = {};

或者,您可以使用||短路,因为undefined被视为错误:

mySchemasList = mySchemasList || {};
总而言之,以下两个例子完全相同。

示例1:

var mySchemasList = {
    schemas : []
}

示例2:

var mySchemasList = {};
mySchemasList.schemas = [];

现在您已经在mySchemasList.schemas创建了一个数组,您可以开始将其他对象推入其中:

mySchemasList.schemas.push(new SelectSchemaModel("A", false));
mySchemasList.schemas.push(new SelectSchemaModel("B", false));
mySchemasList.schemas.push(new SelectSchemaModel("C", false));

将它解析为解析JSON数据的for循环,你可以这样做:

var mydata = JSON.parse(ajax.responseText);
for (var i=0; i<mydata.length; i++) {
    mySchemasList.schemas.push(new SelectSchemaModel(mydata[i],false));
}