2015-11-20 3 views
0

Я пытаюсь динамически открыть элемент аккордеона, если это текущий элемент моего списка задач. Это мой HTML:AngularJS Accordion is-open вызов функции

<div ng-controller="taskController"> 
<uib-accordion close-others="oneAtATime"> 
      <uib-accordion-group heading="{{task.id}}: {{task.subject}}" ng-repeat="task in datafromRedmine.issues" class="priority{{task.priority.id}}"> 
       <div id="midRow"> 

        {{task.tracker.name}}-{{task.project.name}} 

       </div> 
(...) 
</uib-accordion-group> 

    </uib-accordion> 
</div> 

Кто использует угловой контроллер с помощью этой функции:

$scope.isTheCurrent = function (id){ 
     return(id == $scope.Currentid); 
} 

Я пытаюсь добавить рядом с нг-повтором является открытым = "{{isTheCurrent (задача .id)}}», но консоль говорит

Error: [$parse:syntax] Syntax Error: Token '{' invalid key at column 2 of the expression [{{isTheCurrent(task.id)}}] starting at [{isTheCurrent(task.id)}}]. 

Как я могу вернуть Проверяется task.id от нг-повтора такой же, как тот, что я экономил на $ scope.currentId булево?

+0

Извинения на мой предыдущий ответ, я проглядел пару вещей. Первая проблема заключается в том, что синтаксис '{{..}}' не требуется. Однако это не имеет значения, поскольку 'is-open' ожидает назначаемого значения, что означает, что вам, возможно, придется разработать, какой аккордеон активен в контроллере и передать его как переменную – Ankh

ответ

0

Директива ng-repeat обладает специальными свойствами. Один из них - $index. Вы можете использовать это в своем вызове функции. Например:

<div ng-show="isTheCurrent(datafromRedmine.issues[$index].id)"> 
    This is current the issue<br> 
    {{task}} 
</div> 

Для получения дополнительной информации о специальной собственности $index, читать AngularJS ng-repeat API Docs

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