Постоянный доступ к 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;
}