20

すぐに使用できるディレクティブで、よく知られている角度属性を簡単に使用できるはずです。

たとえば、ディレクティブの名前がmyDirectiveの場合、次のように使用します。

<div ng-controller="myController">
   <my-directive ng-click="doSomething()"><my-directive>
</div>

以下の例のようにカスタムクリック属性(onClick)を定義する必要はありません

<div ng-controller="myController">
   <my-directive on-click="doSomething()"><my-directive>
</div>

ng-clickは機能するようですが、ディレクティブタグにもng-controllerを指定する必要がありますが、これは不要です。周囲のdivでコントローラーを定義したい

親のhtml要素で定義されたコントローラーと一緒にディレクティブでng-clickを使用することは可能ですか?

4

1 に答える 1

34

これが更新されたコードです。多分これはあなたが探していたものです。

HTML:

<div data-ng-app="myApp">
    <div data-ng-controller="MyController">
        <my-directive data-ng-click="myFirstFunction('Hallo')"></my-directive>
        <my-directive data-ng-click="mySecondFunction('Hi')"></my-directive>
    </div>
</div>

Angular:

var app = angular.module('myApp', []);

app.directive('myDirective', function(){
    return {
        restrict: 'EA',
        replace: true,
        scope: {
            eventHandler: '&ngClick'
        },
        template: '<div id="holder"><button data-ng-click="eventHandler()">Call own function</button></div>'
    };
});

app.controller('MyController', ['$scope', function($scope) {
    $scope.myFirstFunction = function(msg) {
         alert(msg + '!!! first function call!');   
    };
    $scope.mySecondFunction = function(msg) {
         alert(msg + '!!! second function call!');   
    };
}]);

編集

私がjsFiddlerで作成したソリューションを確認してください。それは、あなたが探していたものですか?

http://jsfiddle.net/migontech/3QRDt/1/

于 2013-03-25T11:41:16.040 に答える