从json建立模型关系的Ext.js问题

时间:2015-04-09 09:59:37

标签: javascript json extjs model extjs4

在我的项目中,我需要创建一份问卷(表格)。问题是根据类别动态生成的,并且位于服务器上,数据库中。 为了解决使用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的模型和关系

任何想法都会非常有用。

1 个答案:

答案 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