AngularJS。如何公开查看app-level常量?

时间:2014-07-08 19:35:42

标签: javascript angularjs

我希望向我的所有视图展示一些应用级配置值。有什么更优雅的方法来实现这一目标?我应该在<body>元素上声明一些应用级控制器,并使用$scope.myVal = myVal公开我的值。或者更好地为此目的使用rootScope

同样在这个问题的上下文中,我想问一下:在AngularJS中排除查看一些简单逻辑的好习惯,比如构建src标记的img属性:

<img src="{{config.imagesBaseUrl}}{{product.imageFileName}}"

或者更好地在控制器中进行URL连接?

4 个答案:

答案 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)并在其中包含配置值。

Angular Service Tutorial

答案 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/