我试图建立一个指令,将做到以下几点:
- 添加其他指令元素(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,它的工作原理如下。
有没有人知道背后的原因是什么 - 如果我能使它工作?
或者如果有人对如何实现我上面所述的另一个想法?
以'NG-show'作品更换任何'NG-if's的。不知道为什么会发生。 – koox00
是的,但我需要ng-if :) – sirrocco
@sirrocco参考指令的'compile'函数中的代码:为什么您要手动编译元素?如果删除编译函数中的最后三行只有'el.removeAttr('swipe');'它按预期工作 –