2013-11-28 158 views
4

我有类似短名称和命名空间

Ext.define('HS.controller.Utility', { 
    statics : { 
    state : 'Oklahoma' 
    } 
    }); 

现在我想从我的控制器访问它,但在控制器的每一个方法,我都要写HS.controller.Utility.state访问它。目前我这样做:var ut = HS.controller.Utility,然后访问state作为ut.state,但我再次声明这个变量在每个函数中。有没有办法在我的控制器中将其设置为短名称,然后从所有功能访问?

回答

4

有几种方法,你可以做到这一点,最好其中:

// Becomes a global variable 
var X = Ext.define('My.long.class.Name'); 

// Set a reference on your main NS at launch time 
launch: function() { 
    MyApp.X = My.long.class.Name; 
} 
+0

我不想超出MVC,有没有办法为每个类设置这样的变量? –

+0

你是什么意思“外部MVC”?如果您担心这一点,请输入完整的课程名称! –

+0

尽可能避免全局方法和变量是很好的。肯定的是,如果没有解决方案,那么我必须使用全局的,但在此之前,如果有什么方法可以在课堂上声明它用于所有类的方法,那么它会很好 –

2

甚至更​​容易比目前的答案是只要声明alternateClassName没有命名空间。只有一行代码,没有初始化或竞争条件,内置于ExtJs中。

Ext.define('HS.controller.Utility', { 

    // 
    // Non-namespaced alternate class name will create 
    // 'globally defined' Utility object. 
    // 
    alternateClassName: 'Utility', 

    statics : { 
     state : 'Oklahoma' 
     } 
    }); 
}); 
相关问题