【问题标题】:get required controllers into directives controller with bindToController使用 bindToController 将所需的控制器放入指令控制器
【发布时间】:2015-08-05 08:00:57
【问题描述】:

我是新的(角度 1.3+)controllerAs 和 bindToController 语法的忠实粉丝。现在,我基本上是在尝试删除指令中的所有链接功能。但是如何将所需的控制器放入指令的控制器中?

一个可行的解决方案是:

require : "ngModel",
scope : true,
bindToController : true,
link : function(scope, elem, attr, ngModelCtrl) {
    scope.ngModel = ngModelCtrl;
},
controller : function(..., $scope) {
    this.ngModel = $scope.ngModel;
}

我觉得这很丑陋,尤其是当我需要重新引入范围和链接功能时。有没有更好的方法来做到这一点?

【问题讨论】:

    标签: angularjs angularjs-directive


    【解决方案1】:

    我的方式需要指令控制器

    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);
        });
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-16
      • 2016-06-14
      • 2013-03-15
      • 1970-01-01
      • 2016-01-26
      • 2015-05-13
      • 2014-03-15
      相关资源
      最近更新 更多