Динамически добавлять ng-click в директивную функцию link
Я пытаюсь создать директиву, которая позволила бы определять элемент как кликабельный или нет, и будет определяться так:
<page is-clickable="true">
transcluded elements...
</page>
Я хочу, чтобы полученный HTML был:
<page is-clickable="true" ng-click="onHandleClick()">
transcluded elements...
</page>
Моя реализация директивы выглядит так:
app.directive('page', function() {
return {
restrict: 'E',
template: '<div ng-transclude></div>',
transclude: true,
link: function(scope, element, attrs) {
var isClickable = angular.isDefined(attrs.isClickable) && scope.$eval(attrs.isClickable) === true ? true : false;
if (isClickable) {
attrs.$set('ngClick', 'onHandleClick()');
}
scope.onHandleClick = function() {
console.log('onHandleClick');
};
}
};
});
Я вижу, что после добавления нового атрибута Angular не знает оng-click
так что это не стрельба. Я пытался добавить$compile
после того, как атрибут установлен, но он вызывает бесконечный цикл компоновки / компоновки.
Я знаю, я могу просто проверить внутриonHandleClick()
функционировать, еслиisClickable
значениеtrue
, но мне любопытно, как можно было бы сделать это с динамическим добавлениемng-click
событие, потому что мне может понадобиться сделать это с несколькими другимиng-*
директивы, и я не хочу добавлять ненужные накладные расходы. Есть идеи?