一尘不染

如何在AngularJS上的HTML中直接访问模块的常量

angularjs

我想直接在html中使用几个常量(在控制器中几次)。

例如,这是主要的应用程序模块:

angular.module('website', [])
.constant('ROUTES', (function () {
    return {
        SIGN_IN: '/sign/in'
  }
})())
.config([..., 'ROUTES', function(..., ROUTES {
    $routeProvider.when(ROUTES.SIGN_IN, {templateUrl: 'pages/sign_in.html', controller:     'SignInController'});
}]);

因此,很清楚如何使用控制器中的常量。

但是我该怎么做:

<html ng-app="website"> 
<body>
<a href="{{ROUTES.SIGN_IN}}">Sign in</a>
</body>
</html>

关键是将所有路线都放在一个地方。所以,我可以这样做,还是我选择了错误的方式?


阅读 410

收藏
2020-07-04

共1个答案

一尘不染

恕我直言,更好的方法是使用$ rootScope。 在html中,每个范围都继承自$
rootScope,因此,如果当前作用域中不存在变量,则使用$ rootScope中声明的变量。

一种好的(IMHO)方法是在 运行 “阶段”中对此进行初始化

angular.module('myApp')
  .run(function ($rootScope) {
      $rootScope.ROUTES = ROUTES
   });
2020-07-04