我正在开展一个项目,我正在从服务中获取优惠清单。 每项优惠均为有效或无效。我通过给出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优惠上显示?
答案 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);
}
});
}