2014-02-17 2 views
0

Вот кодAngularjs: нг-класс не поднимая класс

<body ng-app="app"> 

     <div ng-controller="MainCtrl" > 
     <ul> 
     <li ng-repeat="n in range" class="test" ng-class="{{($index < 5) && 'visible' || 'invisible' }}" style="display:inline;"> 
     <a href ="#">{{n.number}}</a> 
     </li> 
     </ul> 
    </div> 

</body> 

угловых кодового

var app=angular.module('app',[]); 

app.controller('MainCtrl',function($scope){ 
    $scope.range= [ 
{number: "1"}, 
{number: "2"}, 
{number: "3"}, 
{number: "4"}, 
{number: "5"}, 
{number: "6"}, 
{number: "7"}, 
{number: "8"} 
]; 
}); 

Я не вижу видимые или невидимые добавляться в класс, могу я знаю, что это вопросы

+0

Двойные фигурные скобки для строк. Попробуйте с одиночными завитушками – domokun

ответ

2

Нельзя использовать интерполяцию строк в ng-классе ({{ ... }});

Этот синтаксис должен работать:

ng-class="{ visible : ($index < 5), invisible : ($index >= 5) }" 

Но лучший подход (ИМО) будет установлен стили invisible класса как стили этого элемента по умолчанию и применять только visible класса переписывает.

ng-class="{ visible : $index < 5 }" 

Это даст вам более красивый код.

0

Я думаю, что в вашем случае лучше использовать директиву нг-шоу или нг-если:

<li ng-repeat="n in range" ng-if="$index < 5" style="display:inline;"> 

или

<li ng-repeat="n in range" ng-show="$index < 5" style="display:inline;"> 
+0

Что делать, если 'visible' /' invisible' не только отвечает за показ элемента, но и за что-то большее? –

+0

Я предполагаю, что для чего-то большего вам лучше использовать другое имя класса. – Goodnickoff

+0

«Что-то еще» Я имею в виду нечто большее, чем 'display: none' –

1

Почему бы вам не попробовать это. Это будет работать.

ng-class = {($index < 5) ? 'visible' : 'invisible'} 

или Это:

ng-class = {visible: (index<5)} 
Смежные вопросы