在我的项目中,我需要创建一份问卷(表格)。问题是根据类别动态生成的,并且位于服务器上,数据库中。 为了解决使用REST API的问题,所以向/ getquestions / 1发送请求会返回一个JSON,其中包含表单生成所需的所有数据。
JSON看起来像这样:
{
"questions":[
{
"id":4,
"text":"Question1",
"type":"NUMBER",
"mandatory":true,
"visible":true
},
{
"id":5,
"text":"Dropdown type question",
"type":"DROPDOWN",
"mandatory":true,
"visible":true,
"values":[
{
"id":1,
"text":"Answer1",
"selected":false
},
{
"id":2,
"text":"Answer2",
"selected":false
}
]
},
{
"id":7,
"text":"Question 3 as Radio",
"type":"RADIO",
"mandatory":false,
"visible":false,
"values":[
{
"id":1,
"text":"Yes",
"selected":false
},
{
"id":2,
"text":"No",
"selected":false
}
],
"dependencies":{
"mark_visible":[
{
"question_id":5,
"operation":"=",
"value":2
}
],
"mark_mandatory":[
{
"question_id":5,
"operation":"=",
"value":2
},
{
"question_id":4,
"operation":"<=",
"value":5000
}
]
}
}
]
}
] }
我有问题的商店和模型。 我想我也需要一个商店来获取价值,让它在下拉列表中显示,另外一个也用于依赖项。
我只是想知道,是否有可能在没有任何明确编码的情况下以某种方式填充所有商店,使用ext和模型关系,如hasMany等。
我基本上在寻找Ext.js中的最佳实践和最快的解决方案来创建这个JSON的模型和关系
任何想法都会非常有用。
答案 0 :(得分:1)
要从JSON数据填充模型及其关联,您需要让它通过一个读者类(例如Ext.data.JsonReader
),它将沿着“树”向下移动,从而创建关联。
如果您通过代理加载,这应该自动发生(因为它默认使用阅读器)。如果您的JSON来自AJAX调用并且您正在使用Ext.create
调用创建模型实例,那么您需要自己做读取器。类似的东西:
var data = [...];
var reader = Ext.create('Ext.data.JsonReader', {
model: 'MyModel'
});
var resultset = reader.readRecords(data);
console.log(resultset.getRecords()[0]); // logs first read record