$ http Feed显示无法读取属性'协议'

时间:2016-09-14 18:58:59

标签: javascript angularjs

我对此感到茫然。我检查了论坛,似乎无法找到解决方案。

我正在创建一个离子应用程序,将json提要拉入应用程序并让它们处理。我在一个角度模块中有一个进给设置,它可以完美地提取一些数据。但是当我尝试创建第二个模块时,feed会使它出错,但是如果我在$ http.get中对URL进行硬编码就可以了。

TypeError的代码错误:无法读取undefined的属性'protocol':

angular.module('mwre.services', [])

.factory('PropertyFeed', function($http) {

  var listings = {
    residential: "http://somewebsite/api-access/get/mostwantedrealestate/categories/1?limit=2",
    land: "http://somewebsite/api-access/get/mostwantedrealestate/categories/1?limit=2"
  };

  var content = "http://somewebsite/api-access/get/mostwantedrealestate/properties/"

  return {
    getPropertiesContent: function(section, successCallback, errorCallback){
      $http.get(listings[section])
        .success(function(data, status, headers, config) {
          successCallback(data);
        })
        .error(function(data, status, headers, config) {
          errorCallback(status);
        });
    },
    getPropertyItem: function(id, successCallback, errorCallback){
      $http.get(smalldesc + id)
        .success(function(data, status, headers, config) {
          successCallback(data);
        })
        .error(function(data, status, headers, config) {
          errorCallback(status);
        });
    }
  }
});

但是,对$ http.get进行以下更改有效:

    angular.module('mwre.services', [])

.factory('PropertyFeed', function($http) {

  var listings = {
    residential: "http://somewebsite/api-access/get/mostwantedrealestate/categories/1?limit=2",
    land: "http://somewebsite/api-access/get/mostwantedrealestate/categories/1?limit=2"
  };

  var content = "http://somewebsite/api-access/get/mostwantedrealestate/properties/"

  return {
    getPropertiesContent: function(section, successCallback, errorCallback){
      $http.get("http://somewebsite/api-access/get/mostwantedrealestate/categories/1?limit=2")
        .success(function(data, status, headers, config) {
          successCallback(data);
        })
        .error(function(data, status, headers, config) {
          errorCallback(status);
        });
    },
    getPropertyItem: function(id, successCallback, errorCallback){
      $http.get(smalldesc + id)
        .success(function(data, status, headers, config) {
          successCallback(data);
        })
        .error(function(data, status, headers, config) {
          errorCallback(status);
        });
    }
  }
});

我似乎无法弄清楚我的代码中出了什么问题。

这是运行该Feed的控制器。当URL被硬编码时,它完全正常。

angular.module('mwre.controllers', [])

.controller('PropertiesCtrl', function($scope, $state, $stateParams, $log, $ionicPopup, PropertyFeed) {


  $scope.items = [];

  $scope.successGetPropertiesContent = function(data) {
    $scope.maxIntro = 100;
    $scope.items = data.properties;
    for (var i = 0; i < $scope.items.length; i++) {
      $scope.items[i].smalldesc = $scope.items[i].smalldesc.replace(/<[^>]+>/gm, '');
      if ($scope.items[i].smalldesc.length > $scope.maxIntro) {
        $scope.items[i].smalldesc = $scope.items[i].smalldesc.substr(0, $scope.maxIntro) + '...';
      }
    }
  };

  $scope.errorGetPropertiesContent = function(status) {
    $scope.showAlert = function() {
       var alertPopup = $ionicPopup.alert({
         title: 'Error reading property category content',
         template: 'Please check your network connection'
       });
       alertPopup.then(function(res) {
         $log.debug('Error reading property category content');
       });
     };
     $scope.showAlert();
  };

  PropertyFeed.getPropertiesContent($stateParams.propertiesId, $scope.successGetPropertiesContent, $scope.errorGetPropertiesContent);
  $scope.goToContent = function(id) {
    $state.go('app.properties', { propertiesId: id });
  };

})

.controller('PropertyCtrl', function($scope, $state, $stateParams, $log, $ionicPopup, PropertyFeed) {

  $scope.item = null;

  $scope.successGetPropertyItem = function(data) {
    $scope.item = data;
  };

  $scope.errorGetPropertyItem = function(status) {
    $scope.showAlert = function() {
       var alertPopup = $ionicPopup.alert({
         title: 'Error reading property listing',
         template: 'Please check your network connection'
       });
       alertPopup.then(function(res) {
         $log.debug('Error reading property listing');
       });
     };
     $scope.showAlert();
  };

  PropertyFeed.getPropertyItem($stateParams.propertyId, $scope.successGetPropertyItem, $scope.errorGetPropertyItem);

});

0 个答案:

没有答案