angularjs – 奇怪的ngIf $编译行为

我正在尝试构建一个将执行以下操作的指令:

>向元素添加一个指令(例如,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>

“INSIDE”文本不会呈现.
你可以看到这个jsbin的行为:http://jsbin.com/tokofevuga/edit?html,output

如果我删除一个ng-if,它按预期工作.

有谁知道这是什么原因 – 如果我能使它工作?

或者如果有人有另一个想法,如何实现我上面描述的内容

return function (scope) {
      $compile(el)(scope);
    };

为我工作关键是在你的代码中,你可以在编译中立即编译元素,而这里的函数从编译中返回,这将在稍后执行.

相关文章

ANGULAR.JS:NG-SELECTANDNG-OPTIONSPS:其实看英文文档比看中...
AngularJS中使用Chart.js制折线图与饼图实例  Chart.js 是...
IE浏览器兼容性后续前言 继续尝试解决IE浏览器兼容性问题,...
Angular实现下拉菜单多选写这篇文章时,引用文章地址如下:h...
在AngularJS应用中集成科大讯飞语音输入功能前言 根据项目...
Angular数据更新不及时问题探讨前言 在修复控制角标正确变...