2015-04-02 121 views
1

我想初始化全局变量constant在我angularJS这样的:初始化常量和全局变量

var app = angular.module('myApp') 
.constant('test1', myTest.test1) 
.constant('test2', myTest.test2); 

的问题是有时因它抛出一个错误myTest is not defined全局变量myTest不可用。我也试过这个:

.constant('test1', angular.isDefined(myTest)?myTest.test1:'') 
.constant('test2', angular.isDefined(myTest)?myTest.test2:'') 

但它仍然会抛出同样的错误。这有什么锻炼吗?

+0

在窗口MYTEST可用? – mohamedrias 2015-04-02 04:42:38

回答

2

如果有referenceError,angular.isDefined将不起作用。

您可能需要使用:

.constant('test1', typeof myTest != "undefined"? myTest.test1 : ""); 

这是因为引发ReferenceError的。

更好的你包括被设置myTest属性文件下方的角码。

如果是的script.js设置你MYTEST对象,然后

window.myTest = { 
    test1 : "Some value" 
} 

然后插入它下面的角度应用程序的脚本,

var app = angular.module('myApp') 
.constant('test1', myTest.test1) 
.constant('test2', myTest.test2); 

在这种情况下,将始终定义。

+0

你知道我在输入相同的typeof运算符:-P 现在+1你宾果:-) – squiroid 2015-04-02 04:49:21

+2

@codelearner angular.isDefined也抛出错误的情况下变量没有定义。只有JavaScript的typeof操作管理这个王埃罗的:) – squiroid 2015-04-02 04:51:18

+0

是的这个js'typeof'已经工作... :) – codelearner 2015-04-02 06:39:29

0

,你可以把你的全局常量在HTML文件中的脚本标记中这样

脚本
VAR测试1 =测试1 ||别的加载之前'有价值';
脚本