UI Bootstrap Typeahead $digest уже выполняется

Got $digest уже выполняется при попытке заполнить данные из $http.получить

А вот мой код

Результат JSON:

[
  {
    "id": 14,
    "name": "RIAU"
  },
  {
    "id": 21,
    "name": "KEPULAUAN RIAU"
  }
]

Контроллер:

    $scope.getProvince = function(value) {
      return $http.get('/api/v1/province', {
        params: {
          q: value
        }
      }).then(function(response) {
        return response.data;
    });
   }

HTML

<div class="col-lg-6">
          <!-- Province -->
          <div class="form-group">
            <label>Province</label>
            <input type="text" uib-typeahead="province for province.name in getProvince($viewValue)" placeholder="{{ province }}"
              typeahead-loading="loadingLocations" typeahead-no-results="noResults"
              class="form-control" ng-model="cat.customer.anchor_residence_1.province">
            <i ng-show="loadingLocations" class="glyphicon glyphicon-refresh"></i>
            <div ng-show="noResults">
              <i class="glyphicon glyphicon-remove"></i> No Results Found
            </div>
          </div>
        </div>

Кто-нибудь знает, как это решить?

1 ответ

  1. функция getProvince возвращает Promise, а не реальные данные. вы должны разделить сохранение данных и листинг данных.

    ... in provinces ... ng-keydown=getProvince($viewValue) ... in html
    

    #

    Проблема в смешанном угловом цикле дайджеста.

    1) getProvince вызывается в цикле дайджеста (в html)
    2) получать данные от сервера, перед завершенным возвращенным обещанием.
    3) getProvinxe снова, потому что обещание не список. Итак, «падение в цикле дайджеста в цикле дайджеста». Произошла ошибка.