Как я могу устранить необходимость использования $ scope с ui-router и сервисами?

0

Конфигурация ui-router выглядит так:

    var homeAccess = {
        name: 'home.access',
        url: 'Access',
        templateUrl: 'app/access/partials/webapi.html',
        controller: [
                '$scope', 
                'accessService', 
                'testService'   
            function (
                $scope, 
                accessService: IAccessService
                testService: ITestService) {
            $scope.ac = accessService;
            $scope.ts = testService;
        }]
    };

В моем HTML я затем использую accessService и testSaervice следующим образом:

<input ng-model="ac.statusText" />
<input ng-model="ts.Text" />

Насколько я понимаю, было бы лучше, если бы я не использовал $ scope. Так может кто-нибудь сказать мне, как я мог бы реализовать это, не используя $ scope?

  • 1
    Как вы думаете, почему было бы плохо использовать $scope ?
  • 1
    Как вы думаете, почему это будет лучше? Конечно, статьи, которые вы читали, говорят вам, чтобы избежать области действия, объясняют, какова альтернатива. Вы пробовали что-нибудь? Что бы я изменил в вашем коде: 1. определить контроллер в конфигурации маршрутизатора, вместо того, чтобы объявлять его снаружи, в своем собственном файле; 2. сохранить модель формы в сервисе Singleton.
Показать ещё 4 комментария
Теги:

1 ответ

1
Лучший ответ

Я действительно не вижу смысла, если у вас нет законных причин для исключения $scope (см. AngularJS - Зачем использовать "Контроллер как vm"?). При этом вы всегда можете использовать контроллер как выражение...

controller: ['accessService', 'testService', function(accessService, testService) {
    this.ac = accessService;
    this.ts = testService;
}],
controllerAs: 'homeAccess' // or whatever you want to call it

и в вашем шаблоне

<input ng-model="homeAccess.ac.statusText">
<input ng-model="homeAccess.ts.Text">

Имейте в виду, что это все еще использует область видимости, связывая экземпляр вашего контроллера с $scope как выражение controllerAs.

  • 0
    Спасибо за Ваш ответ. Я думал не использовать $ scope после прослушивания презентаций AngularJS 2. Не лучше ли в это время подготовиться к 2, не используя $ scope?
  • 0
    @Anne Если вы на самом деле не используете Angular 2, я бы об этом не беспокоился. Следующая версия - это фундаментальное изменение, я сомневаюсь, что в любом случае будет какая-то простая стратегия миграции, особенно при использовании сторонних инструментов, таких как ui-router

Ещё вопросы

Сообщество Overcoder
Наверх
Меню