Я пытаюсь создать директиву, которая будет делать следующее:
- добавить другую директиву в элемент (например, ngSwipeRight)
- добавить новое поведение в новую директиву.
В качестве примера можно привести: mySwipeBack
, который добавил бы ngSwipeRight
, и когда пользователь проведет над элементом, я сделаю history.back()
.
Я пробовал вот так:
.directive('swipe', function($compile){
return {
restrict: 'A',
compile: function(el){
// I removed all the actual logic for demo purposes
// here I would add ng-swipe-right plus a handler
el.removeAttr('swipe');
var fn = $compile(el);
return function (scope) {
fn(scope);
};
}
}
});
Но я столкнулся с проблемой со следующей разметкой:
<div ng-if='true'>
<h1 swipe>OUTSIDE
<div ng-if="true">INSIDE</div>
</h1>
</div>
Текст "ВНУТРИ" не отображается. Вы можете увидеть поведение в этом jsbin: http://jsbin.com/tokofevuga/edit?html,js,output
Если я удалю первый ng-if, он работает по назначению.
Кто-нибудь знает, в чем причина этого, и если я могу заставить его работать?
Или, если у кого-то есть другое представление о том, как достичь того, что я описал выше?