Angular:引用当前实例化的控制器

时间:2014-06-02 04:20:56

标签: javascript angularjs controller self-reference lexical-scope

有没有办法从控制器的定义中引用当前实例化的控制器对象?我想$compile一个模态并将其绑定到创建模态的同一个控制器。

以下是我想要做的简化版本,其中THIS_CONTROLLER_INSTANCE是对我的控制器实例的引用。

angular.module('foo')
.controller('barController', function($scope, $rootScope){
  $scope.openModal = function(){
    var modalEl = $('<div class="modal">Modal stuff here</div>');
    var controller = THIS_CONTROLLER_INSTANCE;
    modalEl.contents().data('$ngControllerController', THIS_CONTROLLER_INSTANCE);

    $compile(modalEl)($scope);
    $('body').append(modalEl);
  }
});

1 个答案:

答案 0 :(得分:0)

如上所述:

  

当前控制器为this。所以我的问题的解决方案是:

angular.module('foo')
.controller('barController', function($scope, $rootScope){
  var self = this;
  $scope.openModal = function(){
    var modalEl = $('<div class="modal">Modal stuff here</div>');
    var controller = self;
    modalEl.contents().data('$ngControllerController', controller);

    $compile(modalEl)($scope);
    $('body').append(modalEl);
  }
});