Подтвердить что ты не робот

Псевдоним объекта области AngularJS $в контроллере

Не вдаваясь в подробности того, почему, мне нужно предоставить псевдоним для $scope в моих контроллерах. Вместо того, чтобы вводить и украшать $scope, я хотел бы, чтобы пользователи вместо этого могли вставлять view и иметь тот же эффект.

Основываясь на моем понимании angular, $scope создается $scopeProvider, который является factory, зарегистрированным во время конфигурации приложения angular. Я предполагаю, что мне нужно зарегистрировать viewProvider и установить его равным $scopeProvider, но мне не повезло с тем, что я пытался. Любые идеи?

FYI: Я не ищу что-то вроде ['$scope', function(view){..., идеальное решение будет работать с ['view', function(view){.... Объект view будет действовать точно так же, как $scope, двусторонняя привязка и т.д.

4b9b3361

Ответ 1

Я смог решить эту проблему в разделе настроек приложения. В моих контроллерах теперь я могу использовать $scope или view, и они будут иметь то же значение.

   $routeProvider
    .when('/Index', {
        templateUrl: "/views/index.html",
        controller: ['$scope', '$controller', function($scope, $controller){
            $controller("IndexController", {$scope:$scope, view: $scope});
        }]
    })

Ответ 3

Нет такой вещи, как $scopeProvider, области создаются с использованием метода $new, каждая область доступа имеет доступ к этому методу через наследование (точнее, делегирование). Когда вы запрашиваете $scope в контроллере, $scope создается динамически с использованием его родительского метода $scope $new и вводится под этим именем. Чтобы вызвать вышеупомянутое поведение для другого имени, вам придется играть с внутренними angular.