2015-12-18 5 views
0

Я использую API для заполнения $scope.var через $http, принимая это $scope.var.angularJS ngDisabled выполняет функцию перед нагрузками ng-repeat

У меня есть вложенный ng-repeat

HTML:

<tr ng-repeat='(chore,details) in choreList'> 
    <td> 
    <div class="btn-group"> 
     <button ng-repeat="user in users" class='btn group-item' ng-click="addChoreDetail(chore, user.name)" title="{{user.name}}" ng-disabled="checkAddabilityChoreDetail(chore, user.name)">{{chore}}</button> 
      </div> 
     </td> 
     </tr> 

ЯШИ:

$scope.checkAddabilityChoreDetail = function(inputChore,inputName){ 
    console.log(inputChore); 
} 

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

Я получаю undefined в моем журнале консоли для запроса времени get choreList, и я не уверен, как заставить его ждать, пока мой объект будет заполнен данными.

+0

Откуда берутся? – Vi100

+0

У вас есть ng-repeat, берущий ваши массивы из $ scope.choreList и $ scope.users. Убедитесь, что вы заполняете эти переменные области через ваш API ... –

ответ

2

Вы должны использовать обещания для операций async, где вы не знаете, когда это будет завершено - http://docs.angularjs.org/api/ng. $ Q.

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

+0

Вот хороший пример: http://stackoverflow.com/questions/21097677/using-a-promise-for-retrieving-data-inside-angular- директива – Matheno

+0

Я думаю, что Andrew не нуждается в услуге $ q, поскольку он заявил, что использует службу $ http, он уже использует обратный вызов .then, поэтому проблема не должна быть самой просьбой. Мое подозрение относится к угловым дайджесту, так как кажется, что функция ng-disabled срабатывает, когда в ng-повторе нет нагрузок. Это не должно быть проблемой, если в checkAddabilityChoreDetail есть простое условие. После того, как вы занимаетесь бизнесом, вы должны снова вызвать функцию, уже выполняющую обязанности. Тем не менее, больше кода было бы хорошо ... –

+1

Я закончил тем, что создал новую сферу действия и обработал область охвата в обещании моей зависимости. И затем, используя эту новую область, выполните ng-repeat. Проблема решена :) – Andrew

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