【问题标题】:Angularjs $http not returning object on promiseAngularjs $http 未按承诺返回对象
【发布时间】:2016-06-24 18:23:42
【问题描述】:

我正在使用带有角度材料的 angularjs,但它没有从 $http 返回对象我的完整代码笔位于 http://codepen.io/milindsaraswala/pen/rLjLMX

<md-autocomplete md-input-name="autocompleteField" md-no-cache="ctrl.noCache" md-selected-item="ctrl.selectedItem" md-search-text="ctrl.searchText"
                                                                 md-items="item in ctrl.querySearch(ctrl.searchText)" md-item-text="item.display" md-min-length="0"
                                                                 md-floating-label="Station" flex required>
                                    <md-item-template>
                                        <span md-highlight-text="ctrl.searchText" md-highlight-flags="^i">{{item.display}}</span>
                                    </md-item-template>
                                    <div ng-messages="searchForm.autocompleteField.$error" ng-if="searchForm.autocompleteField.$touched">
                                        <div ng-message="required">You <b>must</b> have a favorite state.</div>
                                        <div ng-message="minlength">Your entry is not long enough.</div>
                                        <div ng-message="maxlength">Your entry is too long.</div>
                                    </div>
                                </md-autocomplete>

我做错了什么!!

【问题讨论】:

    标签: javascript css angularjs sharepoint-2013 angular-material


    【解决方案1】:

    函数loadAll()需要返回一个promise。

        function loadAll() {
          var deferred = $q.defer();
          var url = "http://webdev.kuwaitairways.com/_api/lists/getbytitle('KAC_Stations')/items?$select=Id,City_Code,City_Name_EN&$filter=Active eq 1&$orderby=City_Name_EN asc";
      $timeout(function() {
        httpGetService.getDataItem(url).then(function(result) {
          var allStations = [];
          angular.forEach(result, function(b) {
            var station = {
              value: b.City_Code.toLowerCase(),
              display: b.City_Name_EN + '(' + b.City_Code + ')'
            }
            allStations.push(station);
          });
          deferred.resolve(allStations);
        }, function(err) {
          deferred.reject(err);
        })
      }, 1000);
      return deferred.promise;
    }
    

    这是一个工作示例。 http://codepen.io/mkl/pen/XKpRaP

    【讨论】:

    • 谢谢,它可以根据需要工作,但页面变得非常沉重和挂起。控制台中的其他事情我收到错误 错误:[$rootScope:inprog] $digest 已经在进行中可能是什么原因
    • 我不确定为什么会这样。看看这个docs.angularjs.org/error/$rootScope/inprog
    猜你喜欢
    • 2014-10-05
    • 1970-01-01
    • 2020-01-04
    • 2015-01-29
    • 2014-09-27
    • 1970-01-01
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多