2012-12-11 119 views
0

我試圖通過在sencha touch文檔示例中生成的Oreilly應用示例學習sencha touch。 Ext.getStore函數返回undefinedSencha Touch。 Ext.getStore()函數

代碼:

Ext.application({ 
    //name space of application 
    name: 'sample', 

    title: '<img src="lib/resources/images/home.png"/>', 

    webserviceUrl: 'http://xxx/yyy/zzz.svc/', 

    requires: ['sample.util.Proxy'], 

    view: [ 
     'Viewport',  
     'wares.lists.Popular', 
     'wares.lists.List' 
    ], 

    model: [ 
     'WaresListItem' 
    ], 

    store: [ 
     'Wares' 
    ], 

    launch: function() { 
     Ext.Viewport.setMasked({ xtype: 'loadmask' }); 

     sample.util.Proxy.process(function() { 
      Ext.create('sample.views.Viewport'); 
      Ext.Viewport.setMasked(false); 
     });  
    } 
}); 

//------ 

Ext.define('sample.views.Viewport', { 
    extend: 'Ext.tab.Panel', 

    title: 'Hello world!', 

    xtype: 'viewport', 

    config: { 
     fullscreen: true, 

     tabBar: { 
      docked: 'bottom', 
     }, 

     items: [ 
      { xclass: 'sample.views.wares.lists.Popular' }, 
     ] 
    } 
}); 

//----- 

Ext.define('sample.views.wares.lists.Popular', { 
    extend: 'Ext.NavigationView', 

    requires: ['sample.views.wares.lists.List'], 

    xtype: 'Popular', 

    config: {  
     iconCls: 'home', 
     title: 'List', 

     items: [ 
      { 
       xtype: 'wares',       
      } 
     ] 
    } 
}); 

//----- 

Ext.define('sample.views.wares.lists.List', { 
    extend: 'Ext.List', 

    xtype: 'wares', 

    config: { 
     store: 'Wares', 
     itemTpl: {} 
    }, 

    initialize: function() { 
     this.config.title = sample.app.title; 
    } 
});  

//----- 

Ext.define('sample.util.Proxy', { 
    singleton: true, 

    requires: ['Ext.Ajax'], 

    process: function(callback) { 
     var wareListStore = Ext.getStore('Wares'); //returns undefinded 
     var wareModel; 

     console.log("Store: ", wareListStore); 

     Ext.Ajax.request({ 
      url: sample.app.webserviceUrl + 'getSomeItems', 

      disableCaching: false, 
      useDefaultXhrHeader: false, 

      headers: { 
       "Content-Type": "application/json" 
      }, 

      method: 'POST', 

      params: JSON.stringify({"Type":3}), 

      success: function (response) { 
       var result = JSON.parse(response.responseText); 

       if(true === result.Header.Status) {    

        Ext.Array.each(result.Body, function (ware) { 
         wareModel = Ext.create('sample.models.WaresListItem', ware); 
         // wareListStore.add(wareModel); //raises an error 

        });     
       } else { 
        console.log("Error code: %i", result.Header.ErrorCode);  
       }    
      }, 

      failure: function (response) { 
       console.log('Houston, we have a problem!'); 
       console.log(JSON.stringify(response)); 
      } 
     }); 

     callback();  
    } 
}); 

//----- 

Ext.define('sample.store.Wares', { 
    extend: 'Ext.data.Store', 

    config: { 
     model: "sample.models.WaresListItem" 
    } 
}); 

我改寫了一切就像一個例子。我錯過了什麼?

更新:在控制檯中,我看到商店對象腳本根本不包括在內。

回答

1

數組名稱必須給予這些名字viewscontrollersmodelsstores等。重命名數組修復了它。

0
Ext.define('sample.store.Wares', { 
    extend: 'Ext.data.Store', 

    config: { 
     model: "sample.models.WaresListItem", 
     storeId: 'Wares' 
    } 
}); 

試試這個應該工作...希望它可以幫助...

+0

我已經嘗試過這個解決方案。沒有幫助。我已經讀過'getStore'函數的預期參數是storeId。 –