2

如何创建动态表单,其中所有字段都来自 sencha touch 中的 json 文件?

(从“答案”转移的其他详细信息)

我的 json 看起来像 {

  success: true,
 data: [
     {xtype: "textfield", title: "label1", name: "textfield1"},
     {xtype: "emailfield", title: "label2", name: "textfield2"},
     {xtype: "passwordfield", title: "label3", name: "textfield3"},
     {xtype: "button", title: "button", name: "button"}




  ]
}

我想要一个单独的控制器和一个视图。我在这样的单个控制器文件中做到了

       form = Ext.create('MyApp.view.MyDataView');
var test=this;



                var ajax = Ext.Ajax.request({
            url: 'contacts.json',
            method: 'get',
            success: function(response)
             {

            console.log(response);               
            response = Ext.JSON.decode(response.responseText);
                           this.hello=response;
            console.log(response.data.length);  
                for (var i = 0; i < response.data.length; i++) 
                {
                    form.add({
                        xtype: response.data[i].xtype,
                        id:response.data[i].title,
                                        action:response.data[i].title,
                        label: response.data[i].title,
                        name: response.data[i].name

                             });


                                                }


                    console.log(form.getValues());

                                form.setLayout();


                                form.show(document.body);
                Ext.Viewport.animateActiveItem(form,{type: 'flip', direction: 'right'});

 } 

关于 utton tap 事件,我面临一些问题,如果有多个按钮给他们事件,对我来说是不可能的..有人可以帮我解决这个问题吗..

4

1 回答 1

0

你有没有尝试过?

您可以像这样在文件中创建表单:

{
    xtype: 'form',
    items: [ //...
    ]
}

然后你可以加载你的文件,并将其解码为一个变量。

Ext.Ajax.request({
    url: 'yourform.json',
    success: function(response){
        var formInJson = response.responseText;
        var form = Ext.JSON.decode(formInJson);
        //... do something with your form
    }
});
于 2013-02-14T12:09:38.923 回答