2015-05-07 62 views
1

我希望有人能帮助我。 我正在使用angular v1.3.14,并且尝试在ng类映射的关键字中添加一个作用域变量。ngClass style with key

例如

 <b class="fixedClass" ng-class="{'classOne'  : x === 'foo', 
             'classTwo-%(y)%' : x === 'bar'}"> 
      %(z)% 
     </b> 

有没有办法做这样的事情,还是有围绕一个办法吗?

+0

你想要做什么..你想分配一个动态类名 –

+0

我正在创建一个指令,我提供%(y)%[在这种情况下] – Kris

+0

然后我认为一个更好的选择将使用像'ng-class =“dynaClass”'这样的类名变量,然后在'x'上使用watch来更新'dynaclass'的值。 –

回答

2

你可以做这样的事情

angular.module('App',[]) 
.controller('AppController',['$scope',function($scope){ 
    $scope.y = 10; 
    $scope.val = 'bar'; 

    var fixedClass = "fixedClass "; 

    $scope.getCSSClass = function(){ 
     if($scope.val === 'foo'){ 
     return fixedClass + 'classOne'; 
     } else { 
     return fixedClass + 'classTwo-(' +$scope.y+ ')'; 
     } 
    }; 
}]) 

在HTML中

<body ng-controller="AppController"> 
    <b ng-class="getCSSClass()">hello</b> 
</body> 

这里是working代码

+0

这可行,但isActive()是恕我直言,坏名字。更好的名字就像'getCssClass()' –

+0

只是一个例子,我会编辑,如果你想:) – Sushant

+0

是使用控制器会在这里工作 - 感谢在这里注意与示例。我仍然更喜欢解决方案,而不使用额外的控制器来解决这个问题:) – Kris

0

在您的要求来看,似乎你与动态混合静态类名类名称。最好的办法是

ng-class="['fixedClass',' fixedClass2',getDynamicStyle()]"

getDynamicStyle范围暴露返回动态类名称的值。您可以添加任意数量的动态样式。