1

コントローラーから呼び出すことができるディレクティブ内に関数を作成することは可能ですか? 次のようになります。

HTML:

<div myDir id='myDir'>My dir</div>
<button ng-click="clickme()">click me</button>

JS:

app.directive("myDir", function(){
  return function(){
    var dirFunction = function(){
        alert("hello world");
    }
  }
}

app.controller("Control", function($scope){
   $scope.clickme = function(){
     angular.element('#myDir').dirFunction();
   }
}
4

2 に答える 2

2

まず、HTML を に変更myDirmy-dirます。idあなたの場合、あなたのdivに与える必要はありません:

<div my-dir>My dir</div>
<button ng-click="clickme()">click me</button>

dirFunction次に、スコープに公開します。これにより、コントローラーがこの関数にアクセスできるようになります。

app.directive("myDir", function(){
    return function(scope){    
        scope.dirFunction = function(){
            alert("hello world");
        }
    }
});

そして、コントローラー内から次のように呼び出します$scope.dirFunction()

app.controller("Control", function($scope){
    $scope.clickme = function(){
        $scope.dirFunction();
    }
});

注:コントローラー内で DOM 操作を行うべきではありませんangular.element('#myDir').dirFunction();。これをディレクティブ用に保存します。

于 2013-08-23T09:57:01.640 に答える