2016-07-20 8 views
0

У меня есть следующий шаблон с элементами повторения и списком ng. Я пытаюсь держать один элемент открытым в течение времени и исчезать при нажатии. В настоящий момент только первый элемент списка исчезает, хотя идентификатор descHelp используется для всех элементов. Все идеи?AngularJS fadein относится к первому элементу

шаблона:

<div data-ng-repeat="parts in data track by $index"> 
    <li id="title" ng-click='setItem($index);'> 
    <div class="hblinks" ng-click="showDetails = ! showDetails; " > 
     <span class="sb-text-title">the title</span> 
    </div> 
    <div id ="descHelp" ng-show="showDetails && $index == itemIndex"> 

в директиве:

$scope.setItem=function(item) { 
    $scope.itemIndex=item; 
    var target = $element.find('#descHelp'); 
    target.fadeIn(600); 
} 

Спасибо!

+0

Вы не можете иметь несколько элементов с одним и тем же идентификатором, вместо этого используйте класс. – Cameron637

ответ

1

$element.find('#descHelp') вернет вам только первый элемент с этим идентификатором, а не все. Вы должны использовать классы, идентификаторы должны использоваться только один раз.

Вы можете использовать ng-if вместо ng-show, чтобы заставить только один div присутствовать в DOM с этим id в качестве рабочего стола, но я действительно рекомендую.

Лучше построить уникальный идентификатор, используя объект $ указательный как ID = "descHelp - {{$ указательным}}"

1

Дайте уникальный идентификатор, используя $ индекс:

<div data-ng-repeat="parts in data track by $index"> 
    <li id="title" ng-click='setItem($index);'> 
    <div class="hblinks" ng-click="showDetails = ! showDetails; " > 
     <span class="sb-text-title">the title</span> 
    </div> 
    <div id ="descHelp_{{$index}}" ng-show="showDetails && $index == itemIndex"> 

И передать его в контроллер

$scope.setItem=function(item, index) { 
    $scope.itemIndex=item; 
    var target = $element.find('#descHelp_' + index); 
    target.fadeIn(600); 
} 
+0

Спасибо за это, он работает большую часть времени, но не всегда. Например, если я расширяю-сворачиваю-расширяю один и тот же элемент, во втором расширении он не будет исчезать. – Kratos

 Смежные вопросы

  • Нет связанных вопросов^_^