我有一个指令,我希望使用属性控制其行为。这是一个导航栏应该有一个活动项目,具体取决于属性的值
<navbar active="programs"></navbar>
指令的模板
<div class="navbar span12">
<div class="navbar-inner">
<div class="container-fluid">
<a class="brand" href="#">Loopz</a>
<ul class="nav">
<li ng-class="{active: isActive('programs')}"><a href="#/programs">Programs</a></li>
<li ng-class="{active: isActive('shop')}"><a href="#/shop">Shop</a></li>
<li ng-class="{active: isActive('profile')}"><a href="#/profile">Profile</a></li>
</ul>
</div>
</div>
active
类应放在具有匹配active
属性值的元素上。应该评估模板,并且指令的内部作用域应该具有一个函数,该函数将active
属性的值与传递给指令的作用域方法isActive(value)
的值相匹配
指令
directivesModule.directive('navbar', function(){
return {
restrict: "E",
templateUrl: "partials/navbar.html",
replace: true,
controller: function($scope, $element, $attrs){
$scope.isActive = function(value){
return $attrs.active === value;
}
}
}
});
使用正确的值调用isActive
函数,但$attrs
对象不包含active
属性的值。
答案 0 :(得分:1)
我刚把你所有的代码都放到了一个jsFiddle中(如果你下次这样做会很有用),一切似乎都有效:http://jsfiddle.net/rtCP3/110/
这是应该激活的li的输出:
<li ng-class="{active: isActive('programs')}" class="active">
<a href="#/programs">Programs</a>
</li>