2014-09-23 3 views
2

Я создал директиву, которая использует изолированный объем. Я передаю ему переменную из представления.Передача изолированной переменной области видимости от директивы к ее контроллеру

ДИРЕКТИВА

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. Как я могу это сделать ?

Спасибо.

+0

Я не уверен, я полностью понимаю. Можете ли вы сделать это в js скрипке или включить свой код контроллера PLZ – Cathal

ответ

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)); 
} 
Смежные вопросы