【发布时间】:2017-10-23 15:20:18
【问题描述】:
此问题与Trying to bind a store to a ViewModel 相关,但问题不同。
我在这样的视图模型中声明一个商店:
Ext.define('Mb.view.rma.DetailsModel', {
extend: 'Ext.app.ViewModel',
alias: 'viewmodel.rma-details',
requires: ['Mb.model.rma.Detail'],
data: {
id: 0
},
stores:{
details: {
//store: 'rma.Details',
type: 'rmaDetails', // correction as suggested by @scebotari
filters: [{
property: 'rma',
value: '{id}'
}],
remoteFilter: true
}
}
});
当我实例化视图时,值 id 在视图模型中正确更新(我可以看到这一点,因为视图通过绑定标题反映了它):
Ext.define('Mb.view.rma.Details', {
extend: 'Ext.grid.Panel',
requires: [
'Mb.view.rma.DetailsModel'
],
viewModel: {
type: 'rma-details'
},
bind: {
title: 'Retour n° {id}',
store: '{details}'
},
我面临的问题是商店没有被加载,即使视图模型中有remoteFilter: true 属性(在商店类而不是视图模型中设置remoteFilter: true 不会改变行为)。
完成代码,这里是商店(没什么特别的):
Ext.define('Mb.store.rma.Details', {
extend: 'Ext.data.Store',
model: 'Mb.model.rma.Detail',
alias: 'rmaDetails', // correction as suggested by @scebotari
proxy: {
(...)
},
remoteFilter: true
});
主要问题:为什么商店没有加载?
辅助问题:显示详细信息网格(例如发票行)似乎是一个常见问题。我不确定我正在尝试的是否是使用 MVVM 解决此问题的推荐方法。 MVVM 似乎比 MVC 更好,因为它提供了一次打开多个细节实例的可能性。我没有找到这个案例的例子。有没有推荐的方法来解决这个问题?
注意事项:
过滤器按应有的方式应用。
{details} 的店铺好像不是连锁店。其实在viewmodel中把store: 'rma.Details'改成source: 'rma.Details'就变成了连锁店。
【问题讨论】:
-
你有什么问题?
-
@LudovicFeltz 我还在写这个问题。这里是。抱歉,问题不完整。
-
好的,我删除了我的反对票
标签: extjs mvvm extjs6 extjs-stores