0

在我的 Sencha 触摸应用程序中,我通过从 json 对象动态创建表单项来填充我的容器。

对于文本字段,我使用如下代码:

Ext.getCmp('mytestpanel').add({
                        xtype: response.screens[index].screenItems[i].xtype,
                        id:response.screens[index].screenItems[i].name,
                        label: response.screens[index].screenItems[i].title,
                        name: response.screens[index].screenItems[i].name
                        }
                    });

使用的json:

{
 "screens": [
      {
           "screenname": "Screen 1",
           "screenItems": [
                {"xtype": "textfield", "title": "Temperature"," name": "textfield1", "value":"service211"},
                {"xtype": "button", "title": "Update", "name": "button1"}
           ]
      },
      {
           "screenname": "Screen 2",
           "screenItems": [
                {"xtype": "emailfield", "title": "screen2"," name": "textfield2"},
                {"xtype": "checkboxfield", "title": "label3", "name": "textfield13"},
                {"xtype": "selectfield", "title": "Submit", "name": "button11"}
           ]
      }
 ]

}

我需要使用 json 中所见的 web 服务来更新此文本字段的值

{“xtype”:“textfield”,“title”:“Temperature”,“name”:“textfield1”,“value”:“someservice211” }

由于这些值将是实时的,我应该怎么做?

4

1 回答 1

2

使用商店读取 json 怎么样?您可以 setInterval 到 store.load() 然后在加载回调中添加/编辑动态项目:

proxy: {
    type: 'ajax',
    url: 'http://URL',
    reader: {
        type: 'json',
        rootProperty: 'screens'
    }
},

autoLoad: true,

listeners: {
    initialize: function() {
        var interval = setInterval(function() {
            Ext.StoreMgr.lookup('myStore').load();
        }, 2000);
    },

    load: function(st) {
        var testPanel = Ext.getCmp('mytestpanel');
        Ext.each(st, function(record) {
            var obj = Ext.getCmp(record.get('id'));
            if (obj) {
                if (record.get('value')) obj.setValue(record.get('value'));
            } else {
                testPanel.add({
                    xtype: record.get('xtype'),
                    id: record.get('id'),
                    label: record.get('label'),
                    name: record.get('name'),
                    value: record.get('value')
                });
            }
        }
    }
}

希望能帮助到你-

于 2013-08-13T13:56:47.663 回答