在ajax成功回调

时间:2015-06-15 07:06:30

标签: ajax angularjs

我正在开展一个项目,我正在从服务中获取优惠清单。 每项优惠均为有效或无效。我通过给出ajax调用和使用ng-repeat,仅在表格格式的视图上显示Active提供。

点击停用优惠链接时 然后我给另一个ajax请求来停用数据库中的这个提议。因此,一旦我停止提供,它就不应该在视野中显示出来。 我的提供优惠和停用优惠的代码是:

    mPosServices.factory('mosServiceFactory',function($http,$rootScope){
   return{
       viewAllOffers:function(){
           var allOffers = $http({
                        method: "get",
                        url: "http://myServiceUrl/omnichannel/merchant/offer/view/all?enrollmentId="+$rootScope.enrollMentId,
                    });
               return allOffers;     
       },

       inActivateOffer : function(id){
           var inactivate = $http({
               method:'get',
               url : "http://myServiceUrl/omnichannel/merchant/offer/"+id+"/status/INACTIVE?enrollmentId="+$rootScope.enrollMentId,
           });
           return inactivate;
       }
   } 
});

和控制器代码用于提供商品和停用商品是:

var mPosController = angular.module('mPosController', []);

mPosController.controller('offerController', ['$scope', '$rootScope', 'mosServiceFactory', 'ngDialog', function ($scope, $rootScope, mosServiceFactory, ngDialog) {
  mosServiceFactory.viewAllOffers().then(function (data) {
            $scope.offers = data.data.offers;
            console.log($scope.offers);
        });

    $scope.inActivate = function (id) {
        mosServiceFactory.inActivateOffer(id).then(function (data) {
           console.log(data);
        });
      }
    }]);

优惠已成功停用以响应$ scope.inActivate方法,但该特定优惠仍然可见。

一旦我使用服务电话停用优惠,如何在Active优惠上显示?

1 个答案:

答案 0 :(得分:1)

您的代码正确执行GET请求以停用该优惠,但是您没有"告诉" Angular认为报价已被停用。您需要做的是在要约成功停用后(即,$scope.offers承诺解决时)从要约列表inActivateOffer中删除要约。你可以尝试这样的事情:

$scope.inActivate = function (id) {
    mosServiceFactory.inActivateOffer(id).then(function (data) {
        for (var i = 0; i < $scope.offers.length; i++) {
            if ($scope.offers[i].id === id) {
                $scope.offers.splice(i, 1);
            }
    });
}