2015-05-26 3 views
0

Вот что я в настоящее время:Доступ к нг-повтора переменной в контроллере

HTML

  <center><li ng-repeat = "x in items | orderBy: 'priority'"> 
      <!-- color code priorities --> 
      <span ng-style="cmplt" ng-class="{ red: x.type == 'Work', blue: x.type == 'Personal' }"> 
       <b>{{ x.name }}</b></span> 
      <span ng-class="{ yourChore: x.assignedTo == username} "> 
       - {{ x.type }} (Priority {{ x.priority }}) Assigned by {{ x.creator }} to {{ x.assignedTo }} 
      </span>&nbsp;&nbsp; 

<!-- When task is completed, user can click this button to mark it as such --> 
      <button type="button" ng-click="cmplt={color: 'gray', 'text-decoration': 'line-through'} ; 
       markAs(this)">Completed</button> 
      <div ng-class="{ red: x.completed == true }"> Hello</div> 
      <button type="button" ng-click = "comment = true">Comment</button> 
      <div ng-show="comment"><textarea rows="3" columns="50" ng-model="x.comments"></textarea></div> 
      <div>{{ x.comments }}</div> 
     </li></center> 

JavaScript

$scope.markAs = function(repeatScope){ 
    if (!repeatScope.completed){ 
     repeatScope.completed = true; 
    } 
    else { 
     repeatScope.completed = false; 
    } 
}; 

Объект, который повторяется имеет логическое значение в нем, которое по умолчанию помечено как false, но при нажатии кнопки следует переопределить значение tr уе. Проблема в том, что этого не происходит (остается ложным), и я не уверен, почему он основан на моем коде.

+3

Try 'Markas (х)' – devqon

+1

Вы пробовали прохождения Markas (х)? – Owen

+0

Это сделало, спасибо! – Ajv2324

ответ

3

Вы можете передать в текущем элементе тем, что вы определили в ng-repeat:

<li ng-repeat="x in items"> <!-- reference to x within the repeat scope --> 
    <button type="button" 
      ng-click="cmplt={color: 'gray', 'text-decoration': 'line-through'}; markAs(x)"> 
     Completed 
    </button> 
</li> 
1

Вам необходимо пройти x, который является текущим элементом вашего ng-repeat, а не this.

<button type="button" ng-click="cmplt={color: 'gray', 'text-decoration': 'line-through'} ; 
      markAs(x)">Completed</button> 
+0

вы ошибаетесь - 'this' в этом случае относится к _scope_ – Grundy

1

Решение довольно простое, попробовать что-то вроде этого:

Как вы использовали

ng-repeat = "x in items" 

х будет ссылаться на каждый повторный элемент.

markAs(x) 

Запустит функцию с параметрами «справа» x.

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