2015-07-25 4 views
1

Я пытаюсь использовать orderBy в ng-repeat, но он не работает.

Это где я создать и заполнить массив, используемый на нг-повтора:orderBy не работает с массивом

for (var k = 0; k < $scope.allUsers.length; k++) 
    { 
     var score = 
     { 
      points: 0, 
      headshot: 0, 
      winners: 0, 
     }; 

     $scope.currentScore.push(score); 
    } 

А вот где я его называю:

  <tr ng-repeat="singleScore in currentScore | orderBy: 'points'"> 
       <td>{{singleScore.points}}</td> 
       <td>{{singleScore.headshot}}</td> 
       <td>{{singleScore.winners}}</td> 
      </tr> 

Этот массив «currentScore» изменяется время от к времени в функции setInterval и его значениях будут правильно обновлены .. но orderBy никогда не работает.

Я знаю, что есть много похожих вопросов, но почти все разрешены с помощью «вы не используете массив» .. но я действительно использую массив, и он все еще не работает.

Что я делаю неправильно?

EDIT: Решенный с:

$interval($scope.calculateWeekScore, 2000, 10, true, $scope.activeWeek); 

Спасибо!

ответ

1

setInterval не называется в угловом прицеле. Вам необходимо будет позвонить по телефону $scope.apply()

Вы также можете использовать интервал angularjs $, который является оберткой вокруг setInterval.

https://docs.angularjs.org/api/ng/service/$interval

+1

Вы * должны * действительно использовать угловой в '$ timeout', так как он будет выполнять' apply' автомагически – Jan

+0

Итак, я пытаюсь использовать $ таймаут ... I've уже добавлено как функция контроллера приложения, но он не работает. Его просто не вызывают со временем. Код редактируется на главном сообщении. –

+0

Можете ли вы сделать плунж или скрипку, которая показывает вашу проблему? – lostintranslation

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