Постоянный доступ к AngularJS в представлении

Я попытаюсь описать сценарий, несите меня, пожалуйста.

У меня есть константа Angular, называемая Urls, заполненная маршрутами, и некоторые методы доступа к ним.

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)

Причиной использования константы для этого является то, что мне нужно получить к ней доступ во время фазы конфигурации нашего приложения, а также использовать его в контроллерах.

Что я хочу достичь, так это то, что я хочу использовать его и в представлении, например:

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

Есть ли способ достичь чего-то подобного? Предпочтительно, не присваивая постоянным URL-адресам $rootScope или присваивая их каждой области видимости контроллеров?

Ответы

Ответ 1

Невозможно. Вам нужно ввести Urls в контроллер $scope (или родительский с помощью $parent), потому что {{ var }} интерполируется на $scope.var

У вас нет проблем с производительностью, если вы введете Urls в свой контроллер и напишите $scope.Urls = Urls

Пример:

angular.module('myapp').controller('myController', ($scope, Urls) {
  $scope.Urls = Urls;
}