2014-12-02 46 views
0

我想從指令調用控制器中的函數。在控制器從指令到控制器的調用方法

我的指令

.directive('multEcs', ['$http', function($http){ 
    return{ 
     restrict: 'A', 
     replace:false, 
     link: function(scope, elem, attr){ 
      scope.addToArray(); 
     } 
    } 
}]); 

方法

$scope.addToArray = function(){ 
    console.log('method called'); 
} 
+0

因爲你不使用分離的範圍。這應該工作的是。你試過了嗎?你有什麼問題嗎?如果是,請提供詳細信息 – harishr 2014-12-02 10:48:58

+0

沒有錯誤,但功能未被調用。控制器用於在路線上設置的整個頁面。該指令在頁面內。那有什麼問題嗎? – user3002327 2014-12-02 10:52:46

+0

你可以設置plunker – harishr 2014-12-02 10:55:12

回答

0

嘗試傳遞你想打電話給你的指令的功能。

.directive('multEcs', ['$http', function($http){ 
    return{ 
     restrict: 'A', 
     replace:false, 
     scope : { 
      myFunctionToCall : '=' 
     }, 
     link: function(scope, elem, attr){ 
      scope.myFunctionToCall(); 
     } 
    } 
}]); 
+0

我的代碼工作,但只有當方法從指令中的另一個方法調用時。 – user3002327 2014-12-03 01:09:00

0

第一種方式是單向控制器和指令之間的結合:

JS:

angular.module('App',[]) 
.directive('multEcs', [function(){ 
    return{ 
     restrict: 'A', 
     replace: false, 
     scope: { 
      addToArray: '&'        
     }, 
     link: function($scope, elem, attr){ 
      $scope.addToArray(); 
     } 
    } 
}]) 
.controller('HomeCtrl', ['$scope', function($scope){ 
    $scope.addToArray = function(){ 
     console.log('method called'); 
    } 
}]) 

HTML:

<div ng-app="App"> 
    <div ng-controller="HomeCtrl"> 
     <div mult-ecs add-to-array="addToArray()">multEcs</div> 
    </div> 
</div> 

第二種方法是創造孤立在與個人控制器直接的範圍。 Recomended通信指令之間:

JS:

angular.module('App',[]) 
.directive('multEcs', [function(){ 
    return { 
     restrict: 'A', 
     replace: false, 
     controller: 'HomeCtrl', 
     scope: {}, 
     link: function($scope, element, attrs, ctrl){ 
      ctrl.addToArray(); 
     } 
    } 
}]) 
.controller('HomeCtrl', ['$scope', function($scope){ 
    this.addToArray = function(){ 
     console.log('method called'); 
    }; 
}]); 

HTML:

<div ng-app="App"> 
    <div> 
     <div mult-ecs>multEcs</div> 
    </div> 
</div> 
+0

我的代碼工作,但只有當方法從指令中的另一個方法調用時。 – user3002327 2014-12-03 01:08:21

相關問題