@Neversmille

Как вызвать выполнении функции после изменения объекта в $scope?

Всем привет. Есть цикл, в котором я вывожу информацию:

<ul class="list-group"
	ng-init="curMarks=getTaskVotesModalInfo(task)"
>
	<li ng-repeat="info in curMarks"
	     class="list-group-item"
	>
		<span>{{info.worker}}</span>
		<span class="badge">
			{{info.mark}}
		</span>
	</li>
</ul>


Проблема в том, что при изменении task (элемента массива $scope.Tasks) - не вызывается getTaskVotesModalInfo() и не пересчитывается info.mark соответственно.
Если я вывожу все не через функцию getTaskVotesModalInfo(), а всю логику выбрасываю во вьюху - то при изменении task все пересчитывается, но както мне такой вариант не нравится.
Подскажите пожалуйста как лучше выйти из данной ситуации?
  • Вопрос задан
  • 112 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Stepanya
Вот если можно было бы модель строить в контроллере, а вьюха её бы только отрисовывала...

<ul class="list-group">
  <li ng-repeat="info in $ctrl.curMarks" class="list-group-item">
    <span>{{info.worker}}</span>
    <span class="badge">
      {{info.mark}}
    </span>
  </li>
</ul>


function MyCtrl() {
  var vm = this;
  vm.curMarks = null;

  function changeTask() {
   task = [{worker: 'Sergey', mark: '@Neversmille'}];
    vm.curMarks = getTaskVotesModalInfo(task);
  }

  function init() {
    vm.curMarks = getTaskVotesModalInfo(task);
  }

  init();
}


Есть ещё хорошая практика не использовать scope, а использовать контроллер
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы