angular js directive - 如何评估指令模板html的角度标签

时间:2013-05-17 11:21:36

标签: angularjs angularjs-directive angularjs-scope

我有一个指令,我希望使用属性控制其行为。这是一个导航栏应该有一个活动项目,具体取决于属性的值

<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属性的值。

1 个答案:

答案 0 :(得分:1)

我刚把你所有的代码都放到了一个jsFiddle中(如果你下次这样做会很有用),一切似乎都有效:http://jsfiddle.net/rtCP3/110/

这是应该激活的li的输出:

<li ng-class="{active: isActive('programs')}" class="active">
    <a href="#/programs">Programs</a>
</li>