ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript – 为什么ngif忽略优先级?

2019-07-01 20:32:48  阅读:206  来源: 互联网

标签:javascript angularjs angularjs-directive ngif


我创建了一个优先级为1000的自定义指令.在指令的编译函数中,我从元素中删除了ng-if.我的假设是,由于ng-if的优先级较低,因此不应编译.

app.js

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {

});
app.directive('myDirective', function(){
  return {
    priority: 1000,
    compile: function(element){
      angular.element(element).removeAttr('ng-if').removeAttr('my-directive1');
    }
  };
});
app.directive('myDirective1', function(){
  return {
    compile: function(){
      console.log('in mydirective1');
    }
  };
});

的index.html

<div my-directive ng-if="false" my-directive1>
  This div should be visible.
</div>

我创建了另一个指令来检查我对优先级的理解是否正确. myDirective成功删除myDirective1,但不是ngIf.

以下是plunker链接:

https://plnkr.co/edit/86mauwbt5I2aV4aoySpz?p=preview

解决方法:

我不确定为什么优先级不会这样.我建议使用终端来消除低优先级指令.这是更新Plunker.

app.directive('myDirective', function(){
  return {
    priority: 1000,
    terminal: true,
    compile: function(element){
      //element.removeAttr('ng-if').removeAttr('my-directive1');
    }
  };
});

另请参阅有关终端的这些问题:

> How to understand the `terminal` of directive?
> Why use terminal: true instead of removing lower priority directives?

标签:javascript,angularjs,angularjs-directive,ngif
来源: https://codeday.me/bug/20190701/1350679.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有