我希望向我的所有视图展示一些应用级配置值。有什么更优雅的方法来实现这一目标?我应该在<body>
元素上声明一些应用级控制器,并使用$scope.myVal = myVal
公开我的值。或者更好地为此目的使用rootScope
?
同样在这个问题的上下文中,我想问一下:在AngularJS中排除查看一些简单逻辑的好习惯,比如构建src
标记的img
属性:
<img src="{{config.imagesBaseUrl}}{{product.imageFileName}}"
或者更好地在控制器中进行URL连接?
答案 0 :(得分:3)
您将使用服务并将服务注入所需的位置,例如:
myApp.service("Config", function() {
this.myValue = 3;
})
控制器:
myApp.controller("MyCtrl", ["$scope", "Config", function($scope, Config) {
$scope.myVal = Config.myValue;
}]);
至于img
源问题,请在控制器中连接并使用ng-src
来设置源。
答案 1 :(得分:1)
填充rootScope是邪恶的,因为它将通过角度模块进行全局访问。您可以创建一个Angular服务(将其命名为global)并在其中包含配置值。
答案 2 :(得分:0)
考虑创建一个获取并包含app范围常量的服务。然后将此服务注入控制器。然后,您可以从控制器中引用这些值,并将它们用于您想要的任何内容。这些值的一个用法是创建控制器($ scope)级别变量,以便在模板或其他代码中使用。在我们的示例中,这可以用于连接URL。
答案 3 :(得分:0)
这是Angular的服务发挥作用的地方!
angular.module("myApp")
.constant("config", {
// Configure all the things
});
此处还有constant上的文档。 然后你可以在应用程序的任何其他地方使用它......
angular.module("myApp")
.factory("SomeService", function(config) {
// config.urlBase or whatever
return {
doStuff: function() {}
};
});
还有一个非常酷的咕噜声任务,可以帮助你解决这个问题......
http://mindthecode.com/how-to-use-environment-variables-in-your-angular-application/