在视图中访问AngularJS常量

Ras*_*mus 17 javascript coffeescript angularjs

我要试着描述这个场景,请跟我说.

我有一个名为Urls的Angular常量,它填充了路由和一些访问它们的方法.

app = angular.module "app"

app.constant "Urls",
    routes: 
        # Main stuff
        overview: "/"
        users: "/users"
        user: "/users/:id"

    overview: ->
        return @.routes.overview
    users: ->
        return @.routes.users
    user: (id)->
        return @.routes.user
                    .replace(":id", id)
Run Code Online (Sandbox Code Playgroud)

为此使用常量的原因是我需要在应用程序的配置阶段访问它以及在控制器中使用它.

我想要实现的是,我想在视图中使用它,例如;

<ul class="foo">
    <li ng-repeat="user in users">
        <a href="{{Urls.user(user.id)}}">
            {{user.name}}
        </a>
    </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这样的事情?最好不将Urls常量赋给$ rootScope或将其分配给每个控制器$ scope?

小智 11

不可能.您需要注入Urls控制器$scope(或使用父级$parent)因为{{ var }}插值到$scope.var

如果您注入Urls控制器并写入,则没有任何性能问题$scope.Urls = Urls

例:

angular.module('myapp').controller('myController', ($scope, Urls) {
  $scope.Urls = Urls;
}
Run Code Online (Sandbox Code Playgroud)