0

有没有一种方法可以获取定义当前范围的元素?我有一个指令可以根据当前范围修改一些内容,但它需要知道该范围的根元素在哪里。

我知道有一种方法可以获取整个应用程序的根元素,但是有没有一种简单的方法可以仅在您所在的范围内获取它?

我想到这样做的一种方法是在我的链接函数中执行以下操作:

link: function(scope, element, attrs){
  var scopeRootElement = element.parents('.ng-scope').first();
}
4

1 回答 1

0

我相信过去有一项$element服务,请参见此处。但是,我不相信它不再存在,因为这种行为确实违反了关注点分离。我认为您应该在控制器元素上放置一个类、属性等,然后通过指令中的父级(使用 jquery)查找它。

因此,假设您有 jQuery,因此您可以使用该parents方法,如果您想将带有 ng-controller 的元素设为红色,您的链接函数可能如下所示。这种类型取决于您的实现,您可能会考虑添加自己的类而不是依赖一些角度符号:

...
link: function (scope, element, attrs) {  
  element.parents('[ng-controller]:eq(0)').css('background-color','red');
  // or element.parents('.mycustomclass').css('background-color', 'red');
 ...
于 2013-10-14T21:16:49.803 回答