这是我的服务:
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 :(得分:1)
如果您在数据到来之后正在寻找检查和呼叫事件,我列出了两种不同的方法来处理它。
发出 $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逻辑。
如果对此有任何疑虑或疑问,请告诉我。