2015-11-09 43 views
0

這一個是我的服務:POST HTTP://本地主機:53178/API/LocationSearchApi 404(未找到)

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時,它可以工作,但在呼叫完成之前,它會在數據到達之後觸發事件。由於這個原因,我無法將數據綁定到我的視圖。所以我正試圖實現這一點。

+0

你可以使用$ timeout [link](https://docs.angularjs。組織/ API/NG /服務/ $超時) –

回答

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內容被重新裝載時間。據$viewContentLoaded文件,它應該工作

2)使用directive

JS:

.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 !! 
} 

HTML:

<div elem-ready="callMethod()"></div> 

我會ARG ue這是推薦的Angular方式,因爲這樣做的主要好處是您可以像您喜歡的那樣使用廣泛的或精細的UI,並且您正在使用控制器中的DOM邏輯。

讓我知道是否有任何疑慮/查詢此。

+0

其實當我嘗試使用$資源VAR OBJ = $資源(的baseUrl, { 過濾器通過服務來實現這一點:參數,可以 用戶名:用戶id, serviceTypeCode:serviceTypeCode },{ 後 :{ 方法: 'POST', PARAMS:{}, IsArray的:假 } }); obj.post({},功能(響應){ vm.locationDtls =響應; 回調(響應); –

+0

和在控制器latLocationSvc.getLocationList(函數(結果){$ = scope.locationDtlsList結果;});其餘的調用get完成,但是當我嘗試在retrived對象上使用ng-repeat時,它不是wotking,因爲在控制器得到響應之前ng-repeat會被執行。 –

+0

我認爲你需要''timeout' $ scope.locationDtlsList = response;'你試過這個嗎? –

相關問題