ng-class不会在自定义指令上触发

埃尔扎尔

我目前正在为AngularJS开发幻灯片菜单指令javascript由三种类型的指令组成:每种滑动菜单类型的指令(为简便起见,我只包括左滑动菜单),屏幕其余部分的一个包装器指令asmWrapper和一个控制按钮指令asmControl当前,所有这些指令都使用服务asmService进行通信。

当用户单击asmControl时,该指令的控制器在asmService上调用一个方法,该方法确定已触发哪个菜单,并在$ rootScope上发出“ asmEvent”。asmSlidingMenu的控制器将捕获该事件并更新其作用域中的活动变量,但是DOM元素的CSS类保持不变。

我假设未设置ng-class我该如何解决?

我在下面包括了asmSlidingMenu指令的代码。要查看更完整的示例,请查看我制作柱塞

slideMenu.directive('asmSlideLeft', ['$rootScope', 'asmService', 
function($rootScope, asmService) {
  return {
      restrict: 'AEC'
    , scope: {}
    , controller: function($scope) {
        $rootScope.$on('asmEvent', function(event, prop) {
          console.log('Intercepted: ' + asmService.asmStates.slideLeft.active);
          $scope.active = asmService.asmStates.slideLeft.active;
        });
      }
    , compile: function(element, attrs) {
        attrs.$set('class', 'asm asm-horizontal asm-left');
        attrs.$set('data-ng-class', '{"asm-left-open: active"}');
        return {
            pre: function preLink(scope, iElement, iAttrs) {}
          , post: function postLink(scope, iElement, iAttrs) {}
        }
      }
  }
}]);
一个更好的奥利弗

首先active是在隔离范围内,因此ng-class无法访问它。

其次,更重要的ng-class,在按角度收集元素的指令之后添加太晚了。

ng-class如果您有自己的指令,则没有理由使用

slideMenu.directive('asmSlideLeft', ['$rootScope', 'asmService',
  function($rootScope, asmService) {
    return {
      restrict: 'AEC'
      ...
      link: function(scope, element) {
        element.addClass('asm asm-horizontal asm-left');
        $rootScope.$on('asmEvent', function() {
           if (asmService.asmStates.slideLeft.active) {
             element.addClass('asm-left-open');
           }
           else {
            element.removeClass('asm-left-open');
           }
          ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

角度自定义指令不会触发ng-click

来自分类Dev

具有隔离范围的角度自定义指令不会触发ng-click函数

来自分类Dev

ngAnimate-动画不会在重复的自定义指令上触发

来自分类Dev

在自定义replace指令上使用ng-show不会显示或隐藏

来自分类Dev

ng-messages不会显示在自定义指令中

来自分类Dev

父控制器上的$ scope。$ watch不会在子ng-select上触发

来自分类Dev

父控制器上的$ scope。$ watch不会在子ng-select上触发

来自分类Dev

ng-change不会在数字输入类型上触发

来自分类Dev

$ compile()不会在自定义Angular指令中触发

来自分类Dev

ng-show不会在AngularJS的routeChange上更改

来自分类Dev

RowDeselect不会在自定义MvxTableViewSource中触发

来自分类Dev

触发自定义验证指令后,AngularJS ng-model值丢失

来自分类Dev

ng-keydown事件使用自定义指令两次触发

来自分类Dev

Sitecore CustomValidator不会在WFFM自定义字段上触发

来自分类Dev

Angular 1 指令不会在 ng-repeat 内的指令内呈现

来自分类Dev

ng-click不会在AngularJS中触发,而onclick会触发

来自分类Dev

ng-click不会在AngularJS中触发,而onclick会触发

来自分类Dev

ng-model不会在ng-include上更新

来自分类Dev

ng-class在使用templateURL的自定义指令上不起作用

来自分类Dev

自定义指令中的ng-class无法观察更新

来自分类Dev

ng-class在使用templateURL的自定义指令上不起作用

来自分类Dev

与ng-repeat相同的HTML元素上的AngularJS自定义指令

来自分类Dev

AngularJS:ng-repeat在具有隔离范围的自定义指令上

来自分类Dev

ng-repeat自定义指令上的对象数组不起作用

来自分类Dev

ANgularjs:ng-repeat和嵌套的自定义指令

来自分类Dev

带templateUrl和ng-repeat的自定义指令

来自分类Dev

ng-focus自定义指令不起作用

来自分类Dev

在自定义指令中使用ng-blur

来自分类Dev

如何为自定义指令实现ng-change

Related 相关文章

  1. 1

    角度自定义指令不会触发ng-click

  2. 2

    具有隔离范围的角度自定义指令不会触发ng-click函数

  3. 3

    ngAnimate-动画不会在重复的自定义指令上触发

  4. 4

    在自定义replace指令上使用ng-show不会显示或隐藏

  5. 5

    ng-messages不会显示在自定义指令中

  6. 6

    父控制器上的$ scope。$ watch不会在子ng-select上触发

  7. 7

    父控制器上的$ scope。$ watch不会在子ng-select上触发

  8. 8

    ng-change不会在数字输入类型上触发

  9. 9

    $ compile()不会在自定义Angular指令中触发

  10. 10

    ng-show不会在AngularJS的routeChange上更改

  11. 11

    RowDeselect不会在自定义MvxTableViewSource中触发

  12. 12

    触发自定义验证指令后,AngularJS ng-model值丢失

  13. 13

    ng-keydown事件使用自定义指令两次触发

  14. 14

    Sitecore CustomValidator不会在WFFM自定义字段上触发

  15. 15

    Angular 1 指令不会在 ng-repeat 内的指令内呈现

  16. 16

    ng-click不会在AngularJS中触发,而onclick会触发

  17. 17

    ng-click不会在AngularJS中触发,而onclick会触发

  18. 18

    ng-model不会在ng-include上更新

  19. 19

    ng-class在使用templateURL的自定义指令上不起作用

  20. 20

    自定义指令中的ng-class无法观察更新

  21. 21

    ng-class在使用templateURL的自定义指令上不起作用

  22. 22

    与ng-repeat相同的HTML元素上的AngularJS自定义指令

  23. 23

    AngularJS:ng-repeat在具有隔离范围的自定义指令上

  24. 24

    ng-repeat自定义指令上的对象数组不起作用

  25. 25

    ANgularjs:ng-repeat和嵌套的自定义指令

  26. 26

    带templateUrl和ng-repeat的自定义指令

  27. 27

    ng-focus自定义指令不起作用

  28. 28

    在自定义指令中使用ng-blur

  29. 29

    如何为自定义指令实现ng-change

热门标签

归档