我是新(angular 1.3+)控制器和bindToController语法的忠实粉丝。现在我基本上试图删除我的指令中的所有链接函数。但是如何将所需的控制器输入我的指令控制器?
一个有效的解决方案是:
require : "ngModel",
scope : true,
bindToController : true,
link : function(scope, elem, attr, ngModelCtrl) {
scope.ngModel = ngModelCtrl;
},
controller : function(..., $scope) {
this.ngModel = $scope.ngModel;
}
我发现这非常难看,特别是因为我需要再次重新引入范围和链接功能。有更好的方法吗?
答案 0 :(得分:0)
我的方式需要指令控制器
app.directive('psiLbUploadGallery', function() {
return {
restrict: 'E',
template: galleryTpl,
require: ['psiLbUploadGallery', 'ngModel'],
scope: {},
controller: controller,
controllerAs: 'PsiLbUploadCtrl',
bindToController: {
uploadUrl: '='
},
link: function(scope, el, attrs, controllers) {
let PsiLbUploadCtrl = controllers[0];
let ngModelCtrl = controllers[1];
PsiLbUploadCtrl.ngModel = ngModelCtrl;
}
};
});
导出默认类PsiLbUploadCtrl {
constructor() {
setTimeout(() => {
console.log(this.ngModel);
});
}
}