有没有一种方法可以获取定义当前范围的元素?我有一个指令可以根据当前范围修改一些内容,但它需要知道该范围的根元素在哪里。
我知道有一种方法可以获取整个应用程序的根元素,但是有没有一种简单的方法可以仅在您所在的范围内获取它?
我想到这样做的一种方法是在我的链接函数中执行以下操作:
link: function(scope, element, attrs){
var scopeRootElement = element.parents('.ng-scope').first();
}
有没有一种方法可以获取定义当前范围的元素?我有一个指令可以根据当前范围修改一些内容,但它需要知道该范围的根元素在哪里。
我知道有一种方法可以获取整个应用程序的根元素,但是有没有一种简单的方法可以仅在您所在的范围内获取它?
我想到这样做的一种方法是在我的链接函数中执行以下操作:
link: function(scope, element, attrs){
var scopeRootElement = element.parents('.ng-scope').first();
}
我相信过去有一项$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');
...