Подтвердить что ты не робот

Атрибут ng-click в директиве angularjs

Я думаю, что должно быть легко использовать известные атрибуты angular в директиве из коробки.

Например, если имя моей директивы - 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

Можно ли использовать ng-click для директивы вместе с контроллером, определенным в родительском элементе html?

4b9b3361

Ответ 1

Вот обновленный код. Возможно, это то, что вы искали.

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!');   
    };
}]);

Edit

Проверьте решение, которое я сделал в jsFiddler, это то, что вы искали?

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