先在Angular中加载配置文件,然后再加载其他文件
Loading config file in Angular, before everything else
我想在Angular应用程序中加载配置文件,只有在第一次打开应用程序时。然后,配置变量在整个应用程序中变得全局可用。以下是我目前在app.js:中发现的内容
angular
.module('myApp', [
...
])
.run(
[ '$rootScope', '$http',
function ($rootScope, $http) {
$http.get('config/config.json').success(function(data) {
$rootScope.config = data;
});
}
]
)
在这里,我加载config.js,当我试图在我的控制器中使用它时,如下所示:
angular.module('myApp')
.controller('MainCtrl', function ($rootScope) {
console.log($rootScope, $rootScope.config);
})
对于$rootScope,我可以看到包括config在内的所有属性,但$rootScope.config返回未定义。
如何在第一页加载config文件,然后使其在整个应用程序中可访问?
谢谢!
正如Mark Colemans的博客文章中所描述的那样,您可以获取配置,然后加载应用程序。粘贴标记代码以方便:
var urlToCheck = '/echo/json/';
var myApp = angular.module('myApp', []);
myApp.controller("MyCtrl", ["$scope", "config", function ($scope, config) {
$scope.url = config.url;
}]);
$.ajax({
url: urlToCheck
}).fail(function () {
myApp.constant('config', {
url: '/fail-url'
});
}).done(function () {
myApp.constant('config', {
url: '/done-url'
});
}).always(function () {
angular.bootstrap(document, ['myApp']);
});
您可以将其初始化为promise,然后在解析promise时在控制器中访问它。也拒绝承诺。
http://plnkr.co/edit/EIBJhZg80lpeyhkMD3FD
$q.when($rootScope.config).then(function (config) {
console.log($rootScope.config, config);
});
相关文章:
- 先在Angular中加载配置文件,然后再加载其他文件
- 限制在角度中过滤是否会阻止在 ng 重复中加载其他项目
- 使用 jquery 在我的网站中加载其他网页不起作用
- 如果当前图像加载缓慢,如何加载其他图像
- 如何使 ajax 加载页面中的链接加载其他页面
- 使用 AJAX 加载其他页面时加载 GIF 图像
- 在加载其他脚本之前,在 Jasmine 中加载外部脚本
- jQuery .click .appendTo 不加载其他 javascript
- Angular 在加载其他视图之前不显示视图
- 加载初始文件后无法加载其他文件
- 如何在每次单击链接以加载新页面时停止加载其他资产
- JavaScript 加载其他脚本 - 调用函数 - 未定义
- 在加载其他任何内容之前检查用户是否已登录
- RequireJS - 先初始化一个依赖模块,然后再加载其他模块
- 如何在应用程序模板中先加载 Ember 组件,然后再加载其他所有内容
- 在加载其他Javascript库的页面上嵌入Javascript
- 如何创建像StumbleUpon这样的工具栏来加载其他页面
- JS/jQuery mailto AND加载其他站点
- SoundJS如何/可以加载其他预加载程序加载的声音文件(如Pixi.Loader.Loader())
- 我的网站正在加载其他网站,导致它重定向到它