Задать значения вьюмодели при создании компонента.
Всем привет. Наверное глупый вопрос, но чето понять пока не могу
Есть некий компонент Filter. И есть у него View, ViewModel и ViewController Примерно так:
Ext.define('FilterPanel', {
extend: 'Ext.tree.Panel',
alias: 'Filter',
controller: 'ViewController',
viewModel: {
type: 'ViewModel'
},
bind:{
store:'{filterStore}'
}
.................
Во вьюхе объявлена вьюмодель и забиндин стор из него. Вьюмодель примерно такая:
Ext.define('ViewModel', {
extend: 'Ext.app.ViewModel',
alias: 'viewmodel.ViewModel',
data:{
relTypeId:11,
},
stores: {
Objects: {
type: 'objects',
autoLoad:false,
pageSize:'{pageSize}',
proxy:{
extraParams: {
relTypeId: '{relTypeId}'
}
}
}
}
});
В общем мне надо при создании этого компонента както задать relTypeId. Пытаюсь так:
Ext.Create('Filter',{
viewModel:{
data:{ relTypeId: 5}
}
})
Он у меня перезаписывает всю модель целиком. Если я при этом укажу тип viewModel. то все нормально:
Ext.Create('Filter',{
viewModel:{
type: 'ViewModel'
data:{ relTypeId: 5}
}
})
Но помоему это както нелогично и не прозрачно. Есть ещё какието способы задать значение переменной вьюмодели при создании объекта? |
|
Цитата:
|
Цитата:
Цитата:
И еще мне кажется что присвоение модели не в компоненте может запутать в дальнейшем. |
В компоненте вы указываете какую именно модель подключить. А при создании компонента вносите в нее переменные данные. Вот посмотрите на фидл https://fiddle.sencha.com/#fiddle/124n
Там вьюмодель имеет строку для заголовка грида и стор. А заголовки колонок прописывыем при создании компонента. Как видите никто ничего целиком не переписывает. Заголовок грида именно тот что прописанн в модели, стор подключился, значит модель подключена правильная. При создании компонента ExtJS мерджит конфиги, так что все нормально. |
Блин. у меня почему то именно так и не работает. Правда у меня компонент treeview и соответственно в модели стор соответствующего типа.
В вашем примере все отлично! именно так и должно быть. попробую тоже сделать пример в fiddle.sencha.com/ |
В общем разобрался почему у меня не работало! Мой первый пост немного не правильный.
во вьюхе я объявлял вьюмодель следующим образом:
Ext.define('FilterPanel', {
extend: 'Ext.tree.Panel',
alias: 'Filter',
controller: 'ViewController',
viewModel: 'ViewModel'
}
И все работает отлично. нужная модель подключается. Но как только я создавал экземпляр вьюхи и в нем явно указывал какие то данные вьюмодели она перезаписывается. В общем рекомендую явно указывать тип вьюмодели как в моем первом посте. |
| Часовой пояс GMT +3, время: 08:20. |