2016-12-03 10 views
0

作成したストア内のパラメータにアクセスしたいとします。以下の私の店である:storeIdを使用して追加のパラメータをストアに渡す方法

Q.define('test.DataStore', Ext.data.ArrayStore, function($supr){   
return {   constructor: function(cfg) {    
$supr().constructor.call(this, {      
storeId: 'DataRule',      
data :[       
['SEARCH', 'Search')], 
['SEARCH2', 'Search2')], 
    ['SEARCH3', 'Search3')],      
]     
});    
}   
}; } 
); 

、ここでは、IMからストアにアクセスする方法を示します。

items : this.section({ 
    items : [{                
store: 'DataRule' //using the store id defined in the store above       },       {        xtype : 'box',        
width : 10,   
}] 
}] 

私はいくつかのparamsは店に渡すことがしたい、すなわち[{ID: '1'}、 {id: '2'}]。ストア内でアクセスできるようにするにはどうすればよいですか?

ありがとうございます!

答えて

1

私はあなたがExtJS6を使用しているという仮定を作り、あなたの目標は、これらのパラメータを経由して結果をフィルタリングすることである。

あなたの例では、フロントまでのデータを定義します。このことを念頭に置いて、あなたは店に「フィルタ」メソッドを使用することができるはずです。

// use filter method to filter the data on the front-end 
var myStore = Ext.create('Ext.data.Store', { 
    model: 'User', 
    data : [ 
     {id: '1', firstName: 'Peter', lastName: 'Venkman'}, 
     {id: '2', firstName: 'Egon', lastName: 'Spengler'}, 
     {id: '3', firstName: 'Ray',  lastName: 'Stantz'}, 
     {id: '4', firstName: 'Winston', lastName: 'Zeddemore'} 
    ] 
}); 

myStore.filter('id', '1'); 

// making use of storeId 
Ext.getStore('myStore').filter('id', '1'); 

あなたは(AJAXリクエスト経由など)サーバーからデータを要求している場合のparamsを使用してデータを要求する最も簡単な方法があります負荷の呼び出しでのparamsを追加することによって:あなたは、自動的にすべてのLoadイベントのパラメータを注入する場合

Ext.define('User', { 
     extend: 'Ext.data.Model', 
     fields: [ 
      {name: 'id', type: 'string'}, 
      {name: 'firstName', type: 'string'}, 
      {name: 'lastName', type: 'string'}, 
      {name: 'age',  type: 'int'}, 
      {name: 'eyeColor', type: 'string'} 
     ] 
    }); 


    var myStore = Ext.create('Ext.data.Store', { 
     storeId: 'myStore', 
     model: 'User', 
     proxy: { 
      type: 'ajax', 
      url: '/users.json', 
      reader: { 
       type: 'json', 
       rootProperty: 'users' 
      } 
     }, 
     autoLoad: true 
    }); 

    // adding params on load 
    Ext.getStore('myStore').load({ 
     params: {id: '1'} 
    }); 

、あなたは「beforeload」イベントにリスナーを作成して追加することができますのparams:

Ext.define('User', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     {name: 'id', type: 'string'}, 
     {name: 'firstName', type: 'string'}, 
     {name: 'lastName', type: 'string'}, 
     {name: 'age',  type: 'int'}, 
     {name: 'eyeColor', type: 'string'} 
    ] 
}); 


var myStore = Ext.create('Ext.data.Store', { 
    storeId: 'myStore', 
    model: 'User', 
    proxy: { 
     type: 'ajax', 
     url: '/users.json', 
     reader: { 
      type: 'json', 
      rootProperty: 'users' 
     } 
    }, 
    autoLoad: true, 
    listeners: { 
     // add params on every store load by injecting on the beforeload event 
     beforeload: function(store, operation, eOpts) { 
      operation.setParams({id: '1'}); 
     } 
    } 
}); 
// the beforeload event kicks off our code to inject params 
Ext.getStore('myStore').load(); 
+0

素晴らしいトンハンクスChristopher Badalucco – user1234

+0

あなたは私の答えを見つけてうれしい! –

関連する問題