任何人都可以解释我,我做错了什么?
我正在尝试加载数据以存储并在表单加载时选择其中一些。
这是我到目前为止所提出的: 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配置选择项目,它会在控制台中显示错误:
未捕获的TypeError:无法读取未定义的ext-all-debug.js的属性'isModel':144157
根据specification,可以将值设置为与此字段的已配置valueField关联的字符串数组。
答案 0 :(得分:2)
由OP Панов Владимир发布:
好的,我找到了解决方案:
问题出在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;
},
});