Угловой контроллер ссылок из html без $ scope

0

Я работаю с новым угловым, и, как мне сказали, я избавляюсь от объекта $ scope.

Поэтому, когда я ссылаюсь на свой контроллер со страницы html, я ссылаюсь на него с помощью псевдонима:

<div ng-controller="MyController as ctrl">
    <p>{{ ctrl.Hello }}</p>
</div>

Мой вопрос: когда я использую маршруты, и я объявляю один из моих маршрутов:

$stateProvider.state('myPage', {
  url: "/myPage",
  templateUrl: "./views/myPage.html",
  controller: 'MyController'
  })

Каким образом можно ссылаться на контроллер в таком случае без использования $ scope?

  • 3
    controller: 'MyController as myCtrl'
Теги:
scope
alias

2 ответа

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

ui-router поддерживает controllerAs с собственностью.

$stateProvider.state('myPage', {
  url: "/myPage",
  templateUrl: "./views/myPage.html",
  controller: 'MyController',
  controllerAs: 'ctrl'
})

Дополнительная информация https://github.com/angular-ui/ui-router/wiki

  • 2
    Если вы используете строку, вы также можете использовать controller: 'MyController as ctrl'
1

Используйте ваш контроллер с синтаксисом "контроллер как" и переменной vm:

function MyController() {
    // VM represents the Views Model (aka ViewModel)
    var vm = this;

   // exports
   vm.item = "Test item";

   return vm;
}
  • Создайте контроллер без $ scope.
  • Назначьте this локальной переменной. Я предпочел имя переменной как vm, вы можете выбрать любое имя по вашему выбору.
  • Присоедините данные и поведение к переменной vm.
  • В view укажите псевдоним контроллера с помощью контроллера в качестве синтаксиса.
  • Вы можете указать имя псевдонима. Я предпочитаю использовать vm, если Im не работает с вложенными контроллерами.

Ещё вопросы

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