48

いくつかの定数を 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>

ポイントは、すべてのルートを 1 か所にまとめることです。それで、私はこれを行うことができますか、それとも間違った方法を選択したのでしょうか?

4

4 に答える 4

19

他の回答と少し似ていますが、IMO クリーナー:

angular.module('website')
    .constant("ROUTES", {
        SIGN_IN: "/sign/in"
    })
    .run(function ($rootScope, ROUTES) {
        $rootScope.ROUTES = ROUTES;
    });

と:

<a href="{{ROUTES.SIGN_IN}}">Sign in</a>

HTH

于 2015-10-28T14:11:23.437 に答える
16

$rootScope アプローチも気に入っていますが、場合によってはフィルターを使用しました。

簡単な例として、BuildVersion というプロパティを持つオブジェクトとしてどこかに定義された定数 CONFIG があるとします。次のようなフィルタを作成できます。

angular.module('myApp')
  .filter('interpolate', ['CONFIG', function (CONFIG) {
      return function (text) {
          return String(text).replace(/\%VERSION\%/mg, CONFIG.BuildVersion);
      };  
  }]);

そしてHTMLで:

<html ng-app="website"> 
    <body>
        <div>{{'%VERSION%' | interpolate}}</div>
    </body>
</html>

また

<html ng-app="website"> 
    <body>
        <div>{{'bla bla bla %VERSION%.' | interpolate}}</div>
    </body>
</html>
于 2014-07-11T19:31:44.170 に答える