2014-11-05 78 views
0

任何人都可以解釋我,我做錯了什麼?ExtJS 5.0.1 tagfield

我試圖加載數據來存儲和選擇一些表單加載。

這裏是我想出了這麼遠: https://fiddle.sencha.com/#fiddle/cjd

Ext.define('TagModel', { 
    extend: 'Ext.data.Model', 

    fields: [{ 
     name: 'some_id', 
     type: 'int' 
    }, { 
     name: 'some_value', 
     type: 'string' 
    }] 
}); 

Ext.define('MyPanel',{ 
    extend: 'Ext.panel.Panel', 
    renderTo: Ext.getBody(), 
    title: 'Some title', 
    width: 200, 
    heigh: 500, 
    layout: 'anchor', 
    items: [{ 
     xtype: 'tagfield', 
     anchor: '100%', 
     displayField: 'some_value', 
     valueField: 'some_id', 
     store: Ext.create('Ext.data.Store', { 
      model: 'TagModel', 
      data: [{ 
       some_id: 0, 
       some_value: 'value0' 
      }, { 
       some_id: 1, 
       some_value: 'value1' 
      }] 
     }), 
     // value: ['0'] 
    }] 
}); 

Ext.application({ 
    name: 'Fiddle', 

    launch: function() { 
     Ext.create('MyPanel'); 
    } 
}); 

它運作良好,但如果你取消註釋行40,這應該告訴組件由他們valueField配置選擇項目,它顯示錯誤控制檯:

遺漏的類型錯誤:無法讀取不確定EXT-ALL-debug.js的特性「isModel」:144157

按照specification,值可以設置爲字符串associ數組用於此字段的配置值字段。

回答

2

張貼由OP Панов Владимир


OK,我已經找到了解決辦法:

的問題是在ExtJS的源代碼。如果任何人有同樣的問題,您可以使用此覆蓋:

Ext.override(Ext.form.field.Tag, { 
    findRecord: function(field, value) { 
     var store = this.store, 
      matches; 

     if (store) { 
      matches = store.queryBy(function(rec) { 
       return rec.get(field) === value; 
      }); 
     } 

     return matches ? matches.getAt(0) : false; 
    }, 
});