Im当前在ViewModel中使用Extjs5的MVVM功能声明存储时遇到问题。
简单用例:
ViewModel:
Ext.define('App.view.view1.View1Model', {
extend: 'Ext.app.ViewModel',
alias: 'viewmodel.view1',`
data: {
},
stores:{
Company:{
model: 'UM.model.CompanyData',
type: 'CompanyData', //Store name
autoLoad: true
}
}
}];
而下面的代码是我的视图控制器:
ViewController:
Ext.define('App.view.view1.View1Controller', {
extend: 'Ext.app.ViewController',
alias: 'controller.view1',
onloadnewdata: function(event, item,store){
var vm= this.getViewModel();
var store=vm.getStore('Company');
console.log(store);
}
});
在触发某个事件时,基于控制台存储的"onloadnewdata"函数为null。
我所需要做的就是在ViewModel上声明存储。请帮我哪一部分错了,还是这是个bug?如果你分享一些想法或其他方法,请不胜感激。谢谢
我认为您需要修改代码,如下所示。为了首先获得对ViewModel的引用,您需要获得对View的引用。
Ext.define('App.view.view1.View1Controller', {
extend: 'Ext.app.ViewController',
alias: 'controller.view1',
onloadnewdata: function(event, item,store){
var store = this.getView().getViewModel().getStore('Company');
console.log(store);
}
});
你可以参考一下这把sencha小提琴https://fiddle.sencha.com/#fiddle/fpb.只需检查以下控制器TestApp.view.grid.GenericGridController。希望它能有所帮助!