Я сделал некоторые директивы 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>
Вы видите что-то не так в коде? Или вы знаете, почему он не работает?
Вам нужно изменить поле ограничения на "A".
Параметр ограничения обычно устанавливается так:
'A' - соответствует только атрибуту name 'E' - соответствует только имени элемента 'C' - соответствует только имени класса. Все эти ограничения могут быть объединены по мере необходимости:
"AEC" - соответствует атрибуту или имени элемента или класса
Доступны следующие 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
var ngIfDirective = ['$animate', function($animate) {
return {
transclude: 'element',
priority: 600,
terminal: true,
restrict: 'A', // --> This means restricting to Attribute
Не зная, какая ошибка на самом деле дает вашу проблему, скорее всего, ваша декларация директивы.
Нет restrict: I
Угловое поддерживает только три значения:
A
- соответствует только имени атрибута E
- соответствует только имени элемента C
- соответствует только имени класса
Вы можете использовать любую комбинацию из трех, но для поддержки нескольких случаев.
Документы: https://docs.angularjs.org/guide/directive#template-expanding-directive В нем указывается информация в нижней части раздела template expanding directive
.
restrict: I
. Существует толькоA
- соответствует только имени атрибута,E
- только соответствует имени элемента,C
- соответствует только имени класса. Однако вы можете дать комбинацию из трех.