использование ControllerAs в компоненте angular 1.5

Я пытаюсь использовать синтаксис controllerAs в компоненте angularjs 1.5.

вот плункер https://plnkr.co/edit/mTa1bvoNi1Qew9l1xAFS?p=preview

без controllerAs все работает нормально.

(function() {
  angular.module("myApp", [])
    .component("helloWorld", {
      template: "Hello {{$ctrl.name}}, I'm {{$ctrl.myName}}!",
      bindings: {
        name: '@'
      },
      controller: helloWorldController
    })

  function helloWorldController() {
    /* jshint validthis: true */
    var vm = this;
    vm.myName = 'Alain'
  }
})();

однако при попытке перейти на controllerAs я больше не получаю привязки.

(function() {
  angular.module("myApp", [])
    .component("helloWorld", {
      template: "Hello {{vm.name}}, I'm {{vm.myName}}!",
      bindings: {
        name: '@'
      },
      controller: ('helloWorldController', helloWorldController)
    })

  function helloWorldController() {
    /* jshint validthis: true */
    var vm = this;
    vm.myName = 'Alain'
  }
})();

person Bryan Dellinger    schedule 29.10.2017    source источник


Ответы (1)


Вы должны указать controllerAs как свойство, например:

(function() {
  angular.module("myApp", [])
    .component("helloWorld", {
      template: "Hello {{vm.name}}, I'm {{vm.myName}}!",
      bindings: {
        name: '@'
      },
      controller: ('helloWorldController', helloWorldController),
      controllerAs: 'vm'
    })

  function helloWorldController() {
    /* jshint validthis: true */
    var vm = this;
    vm.myName = 'Alain'
  }
})();

https://plnkr.co/edit/ThIvAnLJFhucckcRvQ3N?p=preview

Для получения дополнительной информации: https://alexpeattie.com/blog/setting-the-default-controlleras-to-vm-for-component-angular-1-5

person Mosh Feu    schedule 29.10.2017