0

私の bbox 設定:

{
  xtype: 'combobox', 
  editable: false, 
  store: 'my.store', 
  displayField: 'name', 
  valueField: 'id', 
  name: 'rule', 
  fieldLabel: 'Rule', 
  allowBlank: true
}

私のモデル:

Ext.define('rule', {
  extend: 'Ext.data.Model',
  idProperty: 'id',
  fields: [
    {name: 'id', type: 'int'},
    name,
    {name: 'json', type: 'string'},
    {name: 'json2', type: 'string'}
  ]
});

私の店:

Ext.define('Et.store.odinkod.Rules', {
extend: 'Ext.data.Store',
pageSize: 50,

proxy: {
    headers: {'hash': 'hashnumber1'},
    type: 'rest',
    url: 'api/rule',
    reader: {type: 'json', root: 'data'},
    writer: {type: 'json', root: 'data'}
},
/*
listeners: {
    load: function() {

        if(count == 0){

           count++;
              var instance = Ext.create('Et.model.rule', {
              id: '',
              accountHash: '',
              name: 'Always',
              json: '',
              uiJson: '',
              comment: ''
          });   
        this.add(instance);
    }

    }
    },
*/
autoLoad: true,
autoSync: true,
model: 'rule'
});

新しいレコードを作成せずに、dpopbox に追加の「名前」フィールドを表示したい

ストアで「add」メソッドを実行すると、問題を解決できます。しかし、それは私にとって悪い方法です

4

1 に答える 1

0

新しいアイテムをストアに追加する通常の方法は使用できません。ストアへのsync設定により、DB が使用されます。autoLoad: true, autoSync: true

ドロップボックスの DOM を使用しても、ドロップボックスの Element を直接処理することで、目標を達成できます (Component.getEl().dom を試してください)。ただし、これは単なる回避策であり、推奨されません。ロード/同期時にストアがエラーを発生させる可能性があるため、および/またはアクションがストアのロードを引き起こした後にドロップボックス自体が再レンダリングされるときにデータが複製される可能性があるためです。

于 2012-05-05T05:06:21.600 に答える