2011-05-25 154 views
7

添加PARAMS在一個煎茶觸摸,這裏是我的店裏聲明我怎樣才能改變/在商店

Ext.regStore('newsStore', { 
    model: 'News', 
    autoLoad: true, 
    proxy: { 
     type: 'ajax', 
     url: '../news/list.form?format=json', 
     reader: { 
      type: 'json', 
      root: '' 
     } 
    },       
}); 

如何修改PARAMS?我試過

params:{ format: 'json'} 

但它不起作用!

回答

11

商店聲明

new Ext.data.Store({ 
model:'prj.models.ContactInfo', 
storeId:'contactInfoId', 
proxy:{ 
    type:'ajax', 
    url:'/GetContactInfoByID', 
    reader:{ 
     type:'json' 
    }, 
    extraParams:{ 
     format:'json' 
    }, 
    listeners:{ 
     exception:function(proxy, response, orientation){ 
      console.error('Failure Notification', response.responseText); 
      Ext.Msg.alert('Loading failed', response.statusText); 
     } 
    } 
} 
}); 

添加PARAMS到代理和閱讀阿賈克斯店

prj.stores.contactInfoId.getProxy().extraParams.partyID = options.partyID; 
prj.stores.contactInfoId.getProxy().extraParams.eventName = options.eventName; 
prj.stores.contactInfoId.read(); 

希望ŧ他的幫助。

+0

它的工作原理,非常感謝。它的完美,正是我期待的:)。我需要有init參數並通過選項/按鈕進行更改。謝謝。商店對象上的方法read()和load()之間有什麼區別? – BasicCoder 2011-05-25 13:16:23

+0

都具有相同的功能,例如打一個ajax調用並填充商店。使用加載你有可選的配置對象,加載前傳遞到Ext.data.Operation對象。 – mehul9595 2011-05-25 14:06:47

+1

在Sencha Touch 2.0.1.1 proxy.extraParams = {...}無法正常工作。 改爲使用proxy.setExtraParams({...})。 – sunsay 2012-07-13 13:35:31

2

你可以嘗試使用extraParams

Ext.regStore('newsStore', { 
    model: 'News', 
    autoLoad: true, 
    proxy: { 
     type: 'ajax', 
     url: '../news/list.form', 
     reader: { 
      type: 'json', 
      root: '' 
     }, 
     extraParams: { 
      format: 'json' 
     } 
    },       
}); 
+0

它的工作原理。你有一個想法如何修改參數?我像這樣檢索商店:Ext.StoreMgr.get('newsStore')。load();它可能改變extraParams? (Ext.StoreMgr.get('newsStore')。proxy.extraParams ....?) – BasicCoder 2011-05-25 09:40:41

+0

好的,由mehul9595回答(在這篇文章上) – BasicCoder 2011-05-25 13:17:33

1

我建議你一個更優雅的解決方案,煎茶辦法做到這一點:

//Take your store 
var store = Ext.StoreMgr.get('YOUR_STORE_ID'); 

//Apply the params 
Ext.apply(store.getProxy().extraParams, { 
    partyID: options.partyID, 
    eventName: options.eventName 
}); 

//Reload your store 
store.contactInfoId.read(); 

希望這有助於。

3

動態設置額外的參數:

如果你想一次設置一個參數,你可以用以下

var proxy= myStore.getProxy(); 
proxy.setExtraParam('param1', 'value 1'); 
proxy.setExtraParam('param2' , 'value 2'); 
myStore.load(); 

如果你想一次設置多個參數,你可以使用以下

proxy.setExtraParams({ 
    'param1':'value 1', 
    'param2':'value 2' 
});