我目前在使用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:
的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”函数触发某些事件时为空。
我需要做的就是在ViewModel上获取声明的商店。请帮帮我哪一部分错了或这是一个错误? 感谢您分享一些想法或其他方法。感谢。
答案 0 :(得分:4)
我认为你需要修改下面的代码。为了首先获得对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。希望它有所帮助!