2014-09-23 102 views
2

我創建了一個使用隔離範圍的指令。我從視圖中傳遞一個變量。將隔離範圍變量從指令傳遞到其控制器

DIRECTIVE

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

THE VIEW

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

現在,當我打通Batarang,我看到ABCtrl的一個對象的所有範圍元素。和一個對象有{some: object}。我希望這個{some: object}成爲ABCtrl的一部分。我怎樣才能做到這一點 ?

謝謝。

+0

我不知道我完全理解。你可以在js小提琴中做這個,或者包含你的控制器代碼plz – Cathal 2014-09-23 16:11:43

回答

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)); 
} 
相關問題