将隔离的范围变量从指令传递到其控制器

时间:2014-09-23 15:48:00

标签: angularjs angularjs-directive angularjs-scope

我创建了一个使用隔离范围的指令。我从视图中传递了一个变量。

指令

function abcDirective() {
    return {
        restrict: 'AEC',
        templateUrl: 'abc.html',
        controller: 'ABController as abCtrl',
        scope: {
            dataSent: '='
        }
    }
}

观点

<div abc-directive data-sent="{some: Object}"></div>

现在,当我打开Batarang时,我看到了一个带有所有范围元素的ABCtrl对象。并且一个对象具有{some: object}。我希望这个{some: object}成为ABCtrl的一部分。我怎么能这样做?

感谢。

1 个答案:

答案 0 :(得分:3)

new feature in 1.3允许您通过指令定义上的bindToController属性指定。

{
  scope: {
     dataSent:'='
  },
  bindToController:true
}

在此之前,您必须手动执行此操作,无论是在链接功能中还是在指令控制器内:

{
   //Using the link function
   link:function(scope, elem, attrs, ctrl){
      ctrl.dataSent = scope.dataSent;

      scope.$watch('dataSent', function(){
         ctrl.dataSent = scope.dataSent;
      });
   }
}

//Using the controller
var ABCController = function($scope){
   this.dataSent = $scope.dataSent;

   $scope.$watch('dataSent', function(){
      this.dataSent = $scope.dataSent;
   }.bind(this));
}