AngularJS指令限制

时间:2015-09-25 12:17:39

标签: javascript angularjs directive

我在过去一周制作了一些AngularJS指令,它们都有效,但是这个指针不起作用,我不知道我做错了什么..

这是我正在谈论的指令:

app.directive('idleCheck', [function () {
  return {
      restrict: 'I',
      link: function (scope, elem, attrs) {
          ifvisible.setIdleDuration(5);
          ifvisible.on("idle", function () {
              var div = document.getElementById('fullscreenWrap');
              div.style.cursor = 'none';
              stream.pause();
          });

          ifvisible.on("wakeup", function () {
              var div = document.getElementById('fullscreenWrap');
              div.style.cursor = 'auto';
              stream.resume();
          });
      }
  }
}]);

这是我的HTML代码,我称之为指令:

<div id="fullscreenWrap" idle-check>
  ...
</div>

你看到代码中有什么问题吗? 或者你知道它为什么不起作用吗?

3 个答案:

答案 0 :(得分:2)

您需要将限制字段更改为&#39; A&#39;。

  

restrict选项通常设置为:

     

&#39; A&#39; - 仅匹配属性名称&#39; E&#39; - 仅匹配元素名称&#39; C&#39;    - 仅匹配类名称这些限制可以根据需要组合使用:

     

&#39; AEC&#39; - 匹配属性或元素或类名

Angular directive

答案 1 :(得分:1)

不知道它实际上给你的问题什么错误很可能是你的指令声明。

没有restrict: I。 Angular仅支持三个值:

A - 仅匹配属性名称 E - 仅匹配元素名称 C - 仅匹配班级名称

你可以但三者的任意组合虽然支持多种情况。

文档:https://docs.angularjs.org/guide/directive#template-expanding-directive 它在template expanding directive部分的底部说明了信息。

答案 2 :(得分:1)

可用的restrict选项包括:'E''A''C''M'

EACM中的一个将指令限制为特定的指令声明样式。

您甚至可以对同一指令restrict: 'AC'

使用多个限制

If you don't restrict any, the defaults (elements and attributes) are used

E - 元素名称(默认):<my-directive></my-directive>

A - 属性(默认):<div my-directive="exp"></div>

C - 上课:<div class="my-directive: exp;"></div>

M - coMment:<!-- directive: my-directive exp -->

例如:

ng-if仅限'A'。因此它只能用作属性,不能用作注释或元素

这里是ngIf

的angularjs代码
var ngIfDirective = ['$animate', function($animate) {
  return {
    transclude: 'element',
    priority: 600,
    terminal: true,
    restrict: 'A',       // --> This means restricting to Attribute