2016-06-06 2 views
1

У меня есть следующая (упрощенная) директива, и я хочу написать ее с помощью Typcript (еще не Angular 2.0).Компонент AngularJS - ngModelController с машинописным текстом

angular 
     .module('app.components') 
     .directive('list', List); 

    function List() { 
     return { 
      restrict: 'E', 
      templateUrl: 'modules/components/List/List.html', 
      controller: ListController, 
      controllerAs: 'vm', 
      require: ['ngModel', '?^form'], 
      bindToController: true, 
      link: LinkFunction, 
      scope: { 
       'id': '@', 
       'name': '@' 
      } 
     }; 

     function LinkFunction(scope, element, attrs, controllers) { 
      var ngModelCtrl = controllers[0]; 
      var formCtrl = controllers[1]; 

      ngModelCtrl.$isEmpty = function(value) { 
       return !value || value.length === 0; 
      }; 

      ngModelCtrl.$render = function() { 
       scope.vm.form = formCtrl; 
       scope.vm.model = ngModelCtrl; 
       scope.vm.selected = ngModelCtrl.$modelValue; 
      }; 

      // ... more controller functions 
    } 
})(); 

Теперь, как я могу вводить контроллеры в моем машинопись Код:

const template = require('./List.html'); 

export default class ListComponent{ 
    static selector = 'list'; 
    static definition: ng.IComponentOptions = { 
     template: template, 
     controller: ListComponent, 
     bindings: { 
      'id': '@', 
      'name': '@' 
     } 
    }; 

    id; 
    name; 

    constructor(private controllers) { // <-- not working 
     'ngInject'; 
    } 

    $onInit() { 
     let ngModelCtrl = this.controllers[0]; 
     let formCtrl = this.controllers[1]; 

     ngModelCtrl.$isEmpty = function(value) { 
      return !value || value.length === 0; 
     }; 

     ngModelCtrl.$render = function() { 
      this.model = ngModelCtrl; 
      this.form = formCtrl; 
      this.selected = ngModelCtrl.$modelValue; 
     }; 
    } 
} 

Надежда кто-то знает ответ или может дать мне подсказку, как достичь своей цели, потому что я искал в Интернете часов, но не нашел для этого решения.

+0

THx за ответ, но я знаю, как писать angularjs с машинописи (Todd Мотто стилистический справочник), но я не знаю, как придать ngModelController в мой компонент (как в старом коде angularjs) – CodeNashor

+0

Вам удалось ввести требуемые контроллеры? –

ответ

Смежные вопросы