Задать значения вьюмодели при создании компонента.
Всем привет. Наверное глупый вопрос, но чето понять пока не могу
Есть некий компонент 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, время: 15:45. |