8

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

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

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

4

1 回答 1

7

您现在可以按名称获取它们,而不是获取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);

或者,如果你更喜欢纯 JS:

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

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

angular.module('myModule').component('MyComponent', MyComponent);
于 2017-02-13T15:29:46.990 回答