В прослушивателе beforeselect, когда я выбираю запись и записываю ее, я замечаю, что фантомное свойство отсутствует в записи.
Согласно официальной документации Sencha, фантом должен существовать на Ext.data.Model (https://docs.sencha.com/extjs/7.3.0/cla ... ty-phantom).
Мой вариант использования заключается в том, что мне нужно различать:
- Выбранные элементы (поскольку он поступает из хранилища, это Ext.data.Model экземпляр, что означает, что он включает в себя фантомное свойство)
- Введенные элементы (вводятся пользователем вручную, поэтому это простой объект)
- Разрешить до 2 выбранных элементы
- Разрешить только 1 типизированный элемент
Заранее спасибо.
Ext.define('My.Component.MyModel', {
extend: 'Ext.data.Model',
idProperty: 'code',
fields: ['code', 'name', 'type'],
});
Ext.define('My.Component.View', {
extend: 'Ext.window.Window',
/**
*** code and configurations ***
**/
items: [{
xtype: 'tagfield',
bind: {
store: '{MyStore}'
}
store: MyStore,
listeners: {
beforeSelect: function(_field,record){
console.log(record); // no phantom property displayed in the console
}
}
}]
});
Ext.define('My.Component.MyViewModel', {
extend: 'Ext.app.ViewModel',
data: {},
formulas: {},
stores: {
MyStore: {
model: 'My.Component.MyModel',
proxy: {
type: 'memory',
}
}
}
});
Ext.define('My.Component.MyViewController', {
extend: 'Ext.app.ViewMController',
initViewModel: function(vm){
const myObject = [{code: 'c1', name: 'code1', type: 'type1'},
{code: 'c2', name: 'code2', type: 'type2'},
{code: 'c3', name: 'code3', type: 'type3'}];
vm.getStore('MyStore').loadData(myObject);
}
});
Подробнее здесь: https://stackoverflow.com/questions/798 ... reselect-l
Мобильная версия