EXTJS 5 - 获取Store的ViewModel返回null值

时间:2014-11-10 11:00:01

标签: extjs mvvm 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:

的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上获取声明的商店。请帮帮我哪一部分错了或这是一个错误? 感谢您分享一些想法或其他方法。感谢。

1 个答案:

答案 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。希望它有所帮助!