2012-03-13 38 views
11

Tôi đang sử dụng đoạn mã sau:Làm cách nào để chuyển tham số sang Ext.data.Store?

var genres1 = new Ext.data.Store({ 
    reader: new Ext.data.JsonReader({ 
     fields: ['pincode','place_name'], 
     root: 'rows' 
    }), 
    proxy: new Ext.data.HttpProxy({ 
     url: 'pointalong.php', 
     method: 'GET' 
    }) 
}); 

nhưng tôi muốn vượt qua 3 thông số đến file php của tôi. làm thế nào tôi nên proccess? và cũng như thế nào tôi sẽ nhận được tại tập tin php.

Trả lời

17

Có hai khả năng. Người đầu tiên là sử dụng cửa hàng baseParams config:

var genres1 = new Ext.data.Store({ 
    baseParams: { 
     param1: 'value1', 
     param2: 'value2' 
    }, 
    // ... 

Điều thứ hai là để gửi cho họ khi bạn đang sử dụng load phương pháp:

genres1.load({params: {param2: 'anotherValue'}}); 

Note: params sẽ ghi đè lên bất kỳ baseParams cùng tên

Vì vậy, nếu bạn thiết lập lưu trữ với baseParams như trong ví dụ trên và sau đó sử dụng load với thông số mà cửa hàng sẽ yêu cầu ...?param1=value1&param2=anotherValue.


... và cũng có thể làm thế nào tôi sẽ nhận được tại php tập tin

Như biến thông thường thông qua thông qua các thông số URL - sử dụng $_GET:

$param1 = $_GET['param1']; 
+5

@Sudhir Nếu bạn đang sử dụng ExtJs 4 bạn sẽ muốn sử dụng "extraParams" tùy chọn cấu hình và bạn sẽ sử dụng nó trên các proxy, không phải là cửa hàng riêng của mình . Phiên bản ExtJ nào bạn đang làm việc cùng? – Justin

14

tôi sử dụng này và nó hoạt động hoàn hảo

Ext.define('store.odon.DiagnosticoStore', { 
extend : 'Ext.data.Store', 
model : 'model.odont.DiagnosticoModel', 
    proxy: { 
    type: 'ajax', 
    api: { 
     create: CONTEXT_PATH + '/mvc/odona/crear', 
     read: CONTEXT_PATH + '/mvc/odon/lista', 
     update: CONTEXT_PATH + '/mvc/odon/update', 
     destroy: CONTEXT_PATH + '/mvc/odon/delete' 
    }, 
    reader: { 
     type: 'json', 
     root: 'diagnosticos', 
     successProperty: 'success' 
    }, 
    writer: { 
     type: 'json', 
     writeAllFields: true, 
     encode: true, 
     root: 'diagnosticos' 
    } 
} 
}); 

tham số được gán cho tải các cửa hàng

var storeDiagnostico= getStore(); // Ext.create('store.odon.DiagnosticoStore'); 
     storeDiagnostico.getProxy().setExtraParam("idOdontologia", value); 
     storeDiagnostico.load(); 
4

Nếu giá trị của tham số có thể thay đổi (ví dụ, nếu nó xuất phát từ một lĩnh vực theo mẫu), sau đó là cách đáng tin cậy nhất là áp dụng các thông số Proxy trước sự kiện load mỗi lần các cửa hàng tải, như sau:

Ext.create('Ext.data.Store', { 
    ... 
    listeners:{ 
     beforeload: function(store){ 
      var filterText = Ext.getCmp('filterText').value; 
      store.getProxy().setExtraParam("filterText", filterText); 
     } 
    }, 
Các vấn đề liên quan