0

我正在使用select fiield在我的項目中加載國家/地區。我從數據庫加載數據。當我使用autoload時,它非常完美:在我的商店中是true。 但是,當我使用自動加載時,它不會加載:false,並手動加載它。Sebcha Touch選擇字段加載問題

附加示例代碼,

在此先感謝。

商店

Ext.define("MyProject.store.CountryStore", { extend: 'Ext.data.Store', 
    storeId: "countryStore", 
    config: { 
     model: "MyProject.model.CountryModel", 
     autoLoad: false, //this is the issue 
     header: { 
      "Content-Type": "application/json" 
     }, 
     proxy: { 
      type: 'ajax', 
      url: MyProject.Config.config.webService + 'GetCountries', 
      //extraParams: { 
      // sessionId: sessionId 
      //}, 
      reader: { 
       type: 'json', 
       rootProperty: 'd.countries' 
      }, 
      actionMethods: { 
       create: 'POST', 
       read: 'POST', 
       update: 'POST', 
       destroy: 'POST' 
      }, 
      writer: { 
       encodeRequest: true, 
       type: 'json' 
      } 
     } 
    } 
}); 

控制器

var CountryStore = Ext.create('MyProject.store.CountryStore', {       }); 


      CountryStore.getProxy().setExtraParams({ 
       sessionId: sessionId 
      }); 
      CountryStore.load({ 
      }); 

視圖

{    xtype: 'selectfield', 
       name: 'country', 
       label: 'Country', 
       store: 'CountryStore', 
       valueField: 'code', 
       displayField: 'name', 
       placeHolder: 'Select your country' 
} 

模型

Ext.define("MyProject.model.CountryModel", { 
    extend: 'Ext.data.Model', 
    config: { 
     idProperty: 'Id', 
     fields  : [ 
      { name: 'code'}, 
      { name: 'name'} 
     ] 
    } 
}); 

回答

0

將商店設置爲名稱時,您使用控制器的商店,它是控制器所有視圖的全球商店。如果你想使用用戶定義存儲,你需要通過它來查看。

Ext.define('YourProject.controller.YourController', {  
    ... 

    sessionId: 'someId', 

    init: function() { 
     var me = this; 

     me.control({ 
      scope: me, 

      'yourviewname': { 
       afterrender: me.onViewAfterRender 
      } 
     }); 

     me.callParent(arguments); 
    }, 

    onViewAfterRender: function(view) { 
     var store = view.getStore(); 

     if (store) { 
      store.getProxy().setExtraParams({ 
       sessionId: sessionId 
      }); 

      store.load(); 
     } 
    } 

    ... 
}); 

Ext.define('YourProject.view.YourView', { 
    ... 
    alias: 'widget.yourviewname', 
    requires: ['YourProject.store.CountryStore'], 

    initComponent: function() { 
     var me = this, 
      countryStore = Ext.create('YourProject.store.CountryStore', {}); 

     Ext.applyIf(me, { 
      ... 

      items: [ 
       { 
        xtype: 'selectfield', 
        name: 'country', 
        label: 'Country', 
        store: countryStore, 
        valueField: 'code', 
        displayField: 'name', 
        placeHolder: 'Select your country' 
       } 
      ] 
     }); 
    } 
}); 
+0

非常感謝您的快速回復。沒有其他方法可以做到嗎?因爲我需要保持我的視圖乾淨(沒有任何功能)。無論如何在控制器中都沒有嗎? – Kasun 2014-09-25 06:30:32

+0

我在控制器中添加業務邏輯 – 2014-09-25 10:54:41

+0

這是正確的。我也打算這樣做。非常感謝你。 – Kasun 2014-09-26 19:48:44

0

我解決它終於:)

當我設置店從控制工程:)

myView.items.items[9].setStore(CountryStore);