如何在Angular1.5组件中访问ngModelController?

Kyl*_*Xie 6 angularjs-components

当我使用angular.component()来创建angular 1.5提供的全新组件时,没有链接函数,因此注入ngModelController或任何其他控制器的旧方法不起作用.

require: 'ngModel', link: function(scope, element, attrs, ctrls)

上面的代码用于访问ngModelController的指令.我们现在如何在组件中访问它?

naf*_*lip 5

ctrls您可以通过名称获取它们,而不是获取数组,就像bindings使用:

class MyComponentController implements ng.IComponentController {

    public modelCtrl: ng.INgModelController;
    ...
    ...
    // use modelCtrl here
    // instead of ctrls[0]
    ...
    ...
}

const MyComponent: ng.IComponentOptions = {
    template: '...',
    bindings: {...},
    require: {modelCtrl: 'ngModel'},
    controller: MyComponentController
}

angular.module('myModule').component('MyComponent', MyComponent);
Run Code Online (Sandbox Code Playgroud)

或者,如果你更喜欢简单的JS:

function MyComponentController() {
    ...
    ...
    // use this.modelCtrl here
    ...
    ...
}

var MyComponent = {
    template: '...',
    bindings: {...},
    require: { modelCtrl: 'ngModel' },
    controller: MyComponentController
};

angular.module('myModule').component('MyComponent', MyComponent);
Run Code Online (Sandbox Code Playgroud)