2014-11-05 34 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; 
    }, 
});