POST http:// localhost:53178 / api / LocationSearchApi 404(未找到)

时间:2015-11-09 06:01:17

标签: angularjs http

这是我的服务:

    latModule.service('latLocationSvc',
        ["$http", "$resource",
          function ($http, $resource) {
     this.post = function (params) {
                     var request = $http({
                          method: "post",
                          url: "/api/LocationSearchApi",
                          data: params
                      });
                      return request;
                  };
    }]);

这是我的控制者:

     $scope.searchFilterData = function() {
            var params = {
                SponsorIcaCid: 88150,
                OwnerIcaCid: null,
                Cid: null,
                TerminalId: null,
                RtnCode: null,
                LocationName: null,
                LocationTypeCode: null,
                OwnerName: null,
                CountryCode: null,
                Address: null,
                City: null,
                StateProv: null,
                Postal: null,
                FromLastUpdateDate: null,
                ToLastUpdateDate: null,
                ErrorCode: null,
                ViewFilterType: 5,
                IsExportRequest: null,
                ExportLocations: null,
                MerchantName: null,
                MerchantCategory: null,
                MccCode: null,
                DataProviderType: null,
                DataProviderId: null,
                PhoneNumber: null,
                OptedOut: null

            };
            var promisePost = latLocationSvc.post(params);
            promisePost.then(function(response) {
                $scope.locationDtlsList = response;
            },function (){});

        };

在调用此帖子api时,我收到以下错误。

POST http://localhost:53178/api/LocationSearchApi 404 (Not Found)

我需要做些什么来克服这个错误?当我通过使用$ resource实现服务来调用API时,它可以工作,但在调用完成之前,它会在数据到来之后触发事件。由于这个原因,我无法将数据绑定到我的视图。所以我试图实现这一点。

1 个答案:

答案 0 :(得分:1)

如果您在数据到来之后正在寻找检查和呼叫事件,我列出了两种不同的方法来处理它。

1)使用$viewContentLoaded

发出

$viewContentLoaded事件意味着要接收此事件,您需要像

这样的父控制器

<强> HTML:

<div ng-controller="MainCtrl">
  <div ng-view></div>
</div>

您可以在MainCtrl中收听事件

<强> JS:

app.controller('MainCtrl', function ($scope, $timeout) {
    $scope.$on('$viewContentLoaded', function(event) {
        $timeout(function() {
            //Here your view content is fully loaded !!
        },0);
    });
});

每次重新加载ngView内容时都会发出。根据{{​​1}}的文档,它应该起作用

2)使用directive

<强> JS:

$viewContentLoaded

HTML:

.directive( 'elemReady', function( $parse ) {
   return {
       restrict: 'A',
       link: function( $scope, elem, attrs ) {    
          elem.ready(function(){
            $scope.$apply(function(){
                var func = $parse(attrs.elemReady);
                func($scope);
            })
          })
       }
    }
});

$scope.callMethod = function(){
    //Here your view content is fully loaded !!
}

我认为这是推荐的Angular方式,因为这样做的主要好处是,您可以根据自己的喜好选择广泛或精细的UI,并使用控制器中的DOM逻辑。

如果对此有任何疑虑或疑问,请告诉我。