Ext-JS 4动态创建控制器 - 代码无法正常工作

时间:2012-12-06 08:55:52

标签: javascript extjs extjs4

你能告诉我为什么这会让我

  

无法调用未定义的子字符串。   无法调用未定义的方法 getModel

Ext.require(                   
    ['MyApp.controller.Country', 'MyApp.controller.CountryProperties'],     // this auto-loads all dependencies 
    function(){ 
            // ... as soon as this class 
            //    and all its dependencies have loaded...
        var controller = Ext.create('MyApp.controller.Country');  // create an instance
        var controller2 = Ext.create('MyApp.controller.CountryPropeties');  // create an instance
        controller.init();                  // launch init() method
        controller2.init();
    }
);

但是当我在app.js中手动将这些控制器,视图,商店和模型添加到控制器中时:[],视图:[]等它可以工作。

顺便说一下。我有内部控制器 - > stores:[],views:[]所以当我只加载一个控制器时,它应该为控制器加载任何依赖项。

为什么我会收到错误?

谢谢。 :)

3 个答案:

答案 0 :(得分:3)

除了@arshabh回答之外,这是完全正确的。

如果您致电(第1版 - 修正错字)

this.application.getController('Country');
this.application.getController('CountryPropeties');
从您的控制器获得的结果与您完全相同,只是更简单一些。请注意,应用程序getter会自动加载缺少的类,并为控制器或存储库初始化/注册它们。

答案 1 :(得分:0)

你的代码很完美,但是你忘记了范围(这个)

请在代码中进行如下更改

    Ext.require(                   
['MyApp.controller.Country', 'MyApp.controller.CountryProperties'],     // this auto-loads all dependencies 
function(){ 
        // ... as soon as this class 
        //    and all its dependencies have loaded...
    var controller = Ext.create('MyApp.controller.Country');  // create an instance
    var controller2 = Ext.create('MyApp.controller.CountryPropeties');  // create an instance
    controller.init();                  // launch init() method
    controller2.init();
},this
   );

答案 2 :(得分:0)

对我有用的是

this.application.getController('Country').doInit(this);

干杯
埃德加