ExtJS 5.0.1标记域

时间:2014-11-05 14:28:08

标签: forms field extjs5

任何人都可以解释我,我做错了什么?

我正在尝试加载数据以存储并在表单加载时选择其中一些。

这是我到目前为止所提出的: 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关联的字符串数组。

1 个答案:

答案 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;
    },
});