【发布时间】:2012-10-16 04:56:26
【问题描述】:
在directive definition 中,有一个用于访问$element 和$attrs 的API,因此您可以返回调用指令的元素。使用 ng-class 之类的标准指令调用自定义函数时,如何访问 $element 和 $attrs?
编辑:我知道这不是惯用的方法。这个问题适用于快速原型,这对 Angular 的许多功能都有很大的用处。只是不是关于可持续性、关注点分离等的那些。我主要关心的是速度。因此,能够使用内置指令和快速控制器方法快速完成某些事情实际上是一种美德,并且可以赢得在未来进行更全面、更正确实施的机会......
在这种情况下,我只是根据$location.path() 的值,根据this post 和this one 将上下文.active 类添加到导航元素。但是,在这些示例中,您需要显式且冗余地将href 属性的内容的副本作为参数传递给您从ng-class 调用的getClass() 函数。但是没有办法以编程方式从getClass() 中访问href 属性并避免将相同的内容作为arg 重复传递吗?
例如,具有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一个指令。谢谢!)
【问题讨论】:
标签: javascript html angularjs