2013-08-12 2 views
0

Dans mon application tactile Sencha, je remplis mon conteneur en créant dynamiquement des éléments de formulaire à partir d'un objet json.Valeur de champ de formulaire à partir de Webservice dans Sencha touch

Pour un champ de texte que je suis en utilisant le code ci-dessous:

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 utilisé:

{ 
"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"} 
      ] 
     } 
] 

}

Je dois mettre à jour la valeur de ce champ de texte en utilisant un webservice comme vu dans le json

{"xtype": "textfield", "title": "Température", "nom": "textfield1", "valeur": "someservice211"}

Comme les valeurs seront en temps réel, comment dois-je faire cela? Qu'en est-il de l'utilisation d'un magasin pour lire le json?

+0

Fondamentalement, vous demander comment mettre à jour la température de la valeur textfield? – Viswa

+0

@Viswa Oui ..... – Kris

Répondre

2

vous pouvez SetInterval à store.load(), puis ajouter/modifier les éléments dynamiques sur le rappel de charge:

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') 
       }); 
      } 
     } 
    } 
} 

espère qu'il helps-

+0

Désolé pour la réponse tardive. La réponse que vous avez fournie semble appropriée. Je vais vous mettre à jour sur ses progrès. – Kris

Questions connexes