UI Bootstrap Typeahead $ digest已在进行中

时间:2016-12-29 10:36:39

标签: angularjs angular-ui-bootstrap

尝试从$ http.get

填充数据时,$ digest已在进行中

这是我的代码

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 个答案:

答案 0 :(得分:0)

getProvince函数返回Promise,而不是真实数据。你必须将保存数据和列表数据分开。

Response.Write("<script>window.open('~/book_details.aspx','_blank'</script>"); 

问题在于混合角度消化循环。

1)在摘要周期中调用getProvince(在html中) 2)在完成返回承诺之前从服务器获取数据。 3)再次获得getProvinxe,因为promise不是list。所以&#34;在摘要周期中进入消化周期&#34;。发生错误。