I have following directive.
(function () {
'use strict';
angular.module('ap.App')
.directive('clearCancelFinishButtonsHtml', function () {
return {
scope: {
clearFunction: '='
},
replace: true,
templateUrl: 'directives/clearCancelFinishButtons.html',
link: function (scope, el, attrs) {
var clear= angular.element(el.find('button.clear'));
console.log(el.find('.clear'));
clear.bind("click", function () {
alert("here");
});
}
}
});
})();
and it is pointing to the html file as follows
<div class="row pull-right">
<div class="col-lg-12 col-md-12 col-sm-12">
<button type="button" class="custom-default clear">CLEAR</button>
<button type="button" class="custom-danger">CANCEL</button>
<button type="button" class="custom-info" ng-click="ap.save()">FINISH</button>
</div>
</div>
What I wanted to do is grab the button with clear
class inside the directive and pass a click event to it. For some reason, click event to element itself seems to work but I couldn't get the hold of child element to bind it. Any help will be much appreciated.
PS.
I am using the directive as
<clear-cancel-finish-buttons-html id="{{$id}}" clear-function="'resetConfigurationPageInputs'">
</clear-cancel-finish-buttons-html>
UPDATE----------
I wanted this to happen as I want to be able to dynamically add and remove function from the directive declaration itself.
Thank you all for trying,
I got it working with the following code.
(function () {
'use strict';
angular.module('ap.App')
.directive('clearCancelFinishButtonsHtml', function () {
return {
scope: {
clearFunction: '='
},
replace: true,
templateUrl: 'directives/clearCancelFinishButtons.html',
link: function (scope, el, attrs) {
var buttons=el.find('button');
angular.forEach(buttons, function(button){
var buttonEl=angular.element(button);
if(buttonEl.hasClass("clear")){
buttonEl.bind("click", function () {
alert("here");
});
}
})
}
}
});
})();
Happy coding ;)