使用" E"的Angular指令不能addClass

时间:2014-10-18 07:51:39

标签: javascript angularjs element addclass directive

最近学习angularjs,我对指令有疑问。当我创建一个“E”,然后尝试添加一个类调用“面板”(它只是将背景颜色设置为红色),它不起作用,但是当我创建一个“A”时,它实际上是有效的。有人知道为什么会这样吗?

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

app.controller('MainCtrl', function($scope) {
  $scope.name = 'world';
});

app.directive("pop", function() {
  return {
    restrict: 'E',
    template: '<div button>' +
      'popup window, hello' +
      '</div>',
    link: function(scope, element, attrs) {
      test(element);
    }
  }
});


app.directive("button", function() {
  return {
    restrict: "A",
    link: function(scope, element, attrs) {
     // test(element);
    }
  }
})

function test(element) {
  element.bind("mouseenter", function() {
    element.addClass("panel");
  });
}

http://plnkr.co/edit/9cLRYIaHH4Rl4bO5GAOp?p=preview

1 个答案:

答案 0 :(得分:0)

如果您将position:absolute;添加到.panel的css中,它会按预期工作,请参阅下面的plunkr。这里的问题是自定义标记元素的默认样式,而不是与angular有关的任何内容。

请参阅http://plnkr.co/edit/CEyCzfNu1gWQAe0q8VbP?p=preview