2
我有一個商店與遠程數據庫模型syncronized。我需要應用遠程過濾。問題是,如果我在配置選項中設置了過濾器,則過濾器正在發送(加載或同步時),但不完全。 商店:ExtJS商店過濾器發送不完整
var RegularItemsStore=Ext.create("appMain.Store.UniversalStore",{
model: 'OrderModel',
modelName:'Order2',
autoSync: true,
filters: [{ "property" : "storeId", "value": 0 , "type": "numeric", "operator": "="},
});
HTTP中ajax請求這個濾鏡ONLY"property" : "storeId", "value": 0
,該"type": "numeric", "operator": "="
錯過通過;在web開發工具:
Query String Parameters
r:backend/index
Table:Order2
log:0
...
filter:[{"property":"storeId","value":0}]
而如果我設置有關存儲代理過濾器,過濾器傳遞給服務器保持不變(以正確的方式): 代理配置:
this.proxy =
{
url: "index.php?r=backend/index&Table=" + this.modelName + this.params,
reader: {
root: "result.data",
totalProperty: "result.count",
type: "json",
metaProperty: 'myMetaData', // config for metaData:
},
actionMethods: {
read: 'GET', update: 'POST'
},
...
};
和濾波器應用:
Ext.each(ItemStoreArray, function(store){
var filter = [ { property: 'contractorId', value: ContractorSelectedId , operator: '=', type: 'numeric' }, { property: 'userId', value: UserId , operator: '=', type: 'numeric' }];
store.getProxy().setExtraParam('filter' , Ext.JSON.encode(filter));
store.load(); //console.dir(store);
});
如何解決?我應該在store init中爲代理設置一個永久過濾器,怎麼樣?
更新
由於跟隨亞歷山大的建議,我已經重寫是解決這一問題的代理服務器的配置參數:
encodeFilters: function(filters) {
var min = [],
length = filters.length,
i = 0;
for (; i < length; i++) {
min[i] = {
property: filters[i].property,
value : filters[i].value,
operator : filters[i].operator, // added
type : filters[i].type, // added
};
}
return this.applyEncoding(min);
},
我可以問你,哪裏可能有這個文件的位置;我搜索的文件夾,並沒有發現什麼......這是我的extjs目錄的鏡頭:https://drive.google.com/file/d/0B2NIZgbwy5TmQzloVGVueDhmRmM/edit?usp=sharing – 2014-09-04 11:31:29
它是在Ext源代碼代碼,你可以從他們的網站下載。我不知道它在硬盤上的位置,但它們甚至在網絡上:http://docs.sencha.com/extjs/4.2.2/source/Server.html#Ext-data-proxy- Server-method-encodeFilters – Alexander 2014-09-04 11:34:42
我發現並完成了它。謝謝。 – 2014-09-04 11:50:51