2012-03-16 16 views
5

मुझे सेन्चा टच 2 सूची में दिखाने के लिए वास्तविक डेटा प्राप्त करने में समस्या हो रही है। सूची को JSONP प्रतिक्रिया द्वारा पॉप्युलेट किया जाना चाहिए, और मुझे उम्मीद है कि 2 पंक्तियां दिखेंगी। इसके बजाय, मुझे एक पंक्ति 'शून्य पर शून्य' के साथ मिलती है।सेन्चा टच 2 - जेएसओएनपी प्रॉक्सी सहायता, टेम्पलेट हमेशा मूल्यों के लिए शून्य है

http://some-server/data-fetcher.php?_dc=1331910031292&events=true&page=1&start=0 
    &limit=25&callback=Ext.data.JsonP.callback1 

यहाँ JSONP प्रतिक्रिया है::

Ext.data.JsonP.callback1({"data":[{"id":"4","name":"Sample Name 1", 
    "description":null,"location":"Sample Location 1", 
    "start_time":"2012-03-22 00:00:00","end_time":null},{"id":"5", 
    "name":"Sample Name 2","description":null,"location":"Sample Location 2", 
    "start_time":"2012-03-31 00:00:00","end_time":null}],"num_rows":2}); 

यहाँ मेरी मॉडल है:

यूआरएल भेज दिया जाता है कि

Ext.define('MyApp.store.EventsOnline', { 
    extend : 'Ext.data.Store', 
    requires: ['MyApp.model.Event'], 
    config : { 
     model : 'MyApp.model.Event', 
     autoLoad : true, 
     proxy : { 
      type : 'jsonp', 
      url : 'http://some-server/data-fetcher.php', 
      reader : { 
       type : 'json', 
       root : 'data', 
       totalCount : 'num_rows' 
      }, 
      callbackKey : 'callback', 
      extraParams : { 
       'events' : true 
      } 
     } 
    } 
}); 
:

Ext.define('MyApp.model.Event', { 
    extend: 'Ext.data.Model', 
    config : { 
     idProperty: 'id', 
     fields : [ { 
      name : "id", 
      type : "int" 
     }, { 
      name : "name", 
      type : "string" 
     }, { 
      name : "description", 
      type : "string" 
     }, { 
      name : "location", 
      type : "string" 
     }, { 
      name : "start_time", 
      type : "date" 
     }, { 
      name : "end_time", 
      type : "date" 
     } ] 
    } 
}); 

यहाँ मेरी दुकान है

Ext.define('MyApp.view.Event', { 
    extend: 'Ext.Container', 
    config : { 
     layout : { 
      type : 'vbox', 
      align : 'stretch' 
     }, 
     fullscreen : true, 
     flex : 1, 
     items : [ 
      { 
       xtype : 'toolbar', 
       docked : 'top', 
       title : 'Events' 
      }, { 
       xtype : 'list', 
       flex : 1, 
       store : 'EventsOnline', 
       itemTpl : '{name} at {location}' 
      } 
     ] 
    } 
}); 

मुझे अपने सूची में देखने की उम्मीद है:

Sample Name 1 at Sample Location 1 
Sample Name 2 at Sample Location 2 

और बजाय सब मैं देख रहा है:

null at null 

मैं गलत क्या कर रहा हूँ +०५३६९१३६३२१०

यहाँ मेरे विचार है ?

संपादित करें: अगर यह मायने रखती है, यहाँ मेरे ऐप और नियंत्रक हैं:

Ext.Loader.setConfig({enabled : true}); 

Ext.application({ 
    name    : 'MyApp', 
    appFolder   : 'app', 
    controllers : ['Home'], 
    launch : function() { 
     window[this.getName()].app = this; 
    } 
}); 

Ext.define('MyApp.controller.Home', { 
    extend: 'Ext.app.Controller', 
    models: ['Event'], 
    stores: ['EventsOnline'], 
    views: ['Event'], 
    init: function() { 
     var me = this; 
     Ext.Viewport.add(Ext.create('MyApp.view.Event')); 
    } 
}); 

उत्तर

3
root : 'data', 
totalCount : 'num_rows' 

मान्य नहीं है। का उपयोग करें:

rootProperty: 'data', 
totalProperty: 'num_rows' 

विकास के लिए sencha-touch-all-compat.js से सुनिश्चित करें कि आप शामिल Sencha टच करें। यह ब्राउजर कंसोल में आपके द्वारा उपयोग की जाने वाली सभी बहिष्कृत चीजों में रिपोर्ट करेगा।

+0

Arrrrgh, वह था। इस दिन मेरे सिर पर टक्कर लगी, मैं अंततः jQuery मोबाइल पर स्विच कर गया, यह देखने के लिए कि क्या उसके साथ मुझे बेहतर भाग्य होगा। शीश, शायद मैं वापस सेन्चा टच 2 पर वापस आऊंगा। ऐसा लगता है कि उन्हें "बहिष्कृत" का अर्थ है "पूरी तरह से बाहर निकाला गया।" मुझे ऑनलाइन इतने सारे सेन्चा टच ट्यूटोरियल मिलते हैं जो अब आवेदन नहीं करते हैं क्योंकि v2 ने बहुत कुछ हटा दिया है/हटा दिया है। –

+1

इस पर एक दिन बर्बाद, धन्यवाद। पिछड़ा compatibiltiy जाओ! – SteveCav

0

मैं अपनी सूची प्रदर्शित करने और इस पर बहुत कुछ खोजने के लिए भी संघर्ष कर रहा था।

अंत में मेरे विचार में यह परिवर्तित करने के बाद मेरा उत्तर मिल गया:

extend: 'Ext.Container', 

extend:'Ext.navigation.View', 

को मैं नीचे दिए गए उदाहरण लिंक से ऊपर सुराग मिल गया है!

Sencha Touch 2: data intigration or how to share dynamic information between sencha and javascript

अब यह काम कर रहा, मेरी पहली MVC उदाहरण काम कर देख कर खुश :)

आशा है कि यह किसी की मदद।