在指令定义中,有一个用于访问 $element 和 $attrs 的 API,因此您可以返回调用指令的元素。使用像 ng-class 这样的标准指令调用自定义函数时,如何访问 $element 和 $attrs?
编辑:我知道这不是惯用的方法。这个问题适用于快速原型,这对 Angular 的许多功能都有很大的用处。只是不是关于可持续性、关注点分离等的那些。我主要关心的是速度。因此,能够使用内置指令和快速控制器方法快速完成某些事情实际上可以成为一种美德,并且可以赢得在未来进行更全面和更正确实施的机会......
在这种情况下,我只是根据这篇文章和这篇文章的值,将上下文类添加到导航.active
元素中。但是,在这些示例中,您需要显式且冗余地将属性内容的副本作为参数传递给您从中调用的函数。但是有没有办法以编程方式从内部访问属性并避免将相同的内容作为 arg 冗余传递?$location.path()
href
getClass()
ng-class
href
getClass()
例如,具有getClass()
我想象的功能的控制器可以工作:
function navCtrl($scope, $routeParams) {
$scope.getClass = function($element, $attrs) {
if ($location.path().substr(0, path.length) == $attrs.href) {
return "active"
} else {
return ""
}
}
}
然后你可以简单而优雅地调用它:
<a ng-class="getClass()" href="/tasks">Tasks</a>
而不是:
<a ng-class="getClass('/tasks')" href="/tasks">Tasks</a>
(我认识到另一种选择是创建一个执行此操作的自定义指令,但现在我只想弄清楚是否可以从指令调用的控制器函数中访问 $attrs 和/或 $element 。谢谢!)