2

我在模态窗口中有一个远程商店的组合。要获取数据,需要向存储发送一个额外的参数。此参数存储为窗口的属性。我怎样才能通过它?

这是我的 app.js 文件(我使用 MVC 模型,至少尝试使用它:)):

Ext.application( {
    requires: [
        'Ext.Ajax'
    ],
    autoCreateViewport: true,
    name: 'PM',
    stores: [
        ...
        'SourceIps',
        ...
    ],
    models: [
        ...
    ],
    controllers: [
        ...
    ],

    init: function() {
    }
} );

我如何显示窗口:

showAddRProbe: function () {
    var data = {
        'deviceId': this.getProbesDeviceCombo().getValue()
    };
    var addProbe = Ext.create( 'PM.view.AddProbe', [true, data] );
    addProbe.show();
}

窗户:

Ext.define( 'PM.view.AddProbe', {
    extend: 'Ext.window.Window',
    ...
    constructor: function( data ) {
        this.newProbe = data[0];
        this.probeData = data[1];
    ...

作为probeData.data.deviceId传递的必需参数

组合:

{
    xtype: 'combo',
    allowBlank: false,
    blankText: Locale.gettext( 'Please select a Source IP' ),
    fieldLabel: Locale.gettext( 'Source IP' ),
    name: 'sourceIP',
    triggerAction: 'all',

    store: 'SourceIps',
    value: Ext.getStore( 'SourceIps' ).getAt(0).get('id'),
    valueField: 'id',
    displayField: 'name',
    queryMode: 'local'
}

店铺:

Ext.define('PM.store.SourceIps', {
    extend: 'Ext.data.Store',
    model: 'PM.model.IdName',

    autoLoad: true,

    proxy: {
        type: 'ajax',
        api: {
            read: 'data/getDeviceIps.php'
        },
        reader: {
            type: 'json',
            root: 'data',

            successProperty: 'success',
            messageProperty: 'message'
        }
    }
});

我厌倦了添加 extraParam 如下,但它不起作用:

var probeData = this.getProbeWindow().probeData.data;
this.getSourceIpCombo().getStore().getProxy().setExtraParam( 'deviceId', probeData.deviceId );
this.getSourceIpCombo().getStore().load();
4

2 回答 2

4

利用

  this.getSourceIpCombo().getStore().load({
       params: {
          deviceId : probeData.deviceId
        }
  });
于 2013-10-11T15:59:50.407 回答
2

您可以将storeId属性添加到您的商店,然后使用

var store = Ext.data.StoreManager.lookup('myStore');

并使用它来应用额外的参数:

Ext.apply(store.getProxy().extraParams, {
    foo : 'bar',
    ...
});

或者

store.getProxy().setExtraParam("countriesId", 1) // add parameter 'countriesId' = 1
于 2013-10-12T08:08:33.820 回答