在我的单页Angular app中,我有一个控制器,它可以调用数据服务。 在数据服务中,结果被推送到名为_result的数组中。 在对数据服务的任何后续调用中,都会附加_result数组,而不是先将其清空,这会导致重复数据传递给控制器并显示在视图中。 我是Javascript的新手,并寻求帮助以确保对数据服务的任何其他调用仅返回唯一数据。 这是我的控制器:
angular.module('frontEndApp').controller('ViewExistingRequestsCtrl', ['$scope', 'requestsRepository',
function ($scope, requestsRepository) {
$scope.sendrequest = requestsRepository.getServiceRequests();
$scope.requests = requestsRepository.result;
}]
);
这是我的数据服务,它有_result数组:
frontEndApp.factory('requestsRepository',function ($http) {
var _result = [];
var postServiceRequest = function (ServiceRequest) {
$http(
{
url: 'http://localhost:8080/api/ServiceRequests', method: "POST", data: ServiceRequest,
headers: {
'Content-Type': 'application/json'
}
}).success(function (data, status, headers, config) {
console.log("postServiceRequest Status: " + status);
}).error(function (data, status, headers, config) {
console.log("postServiceRequest FAILURE: " + status + " ServiceRequest: " + ServiceRequest);
});
};
var getServiceRequests = function () {
$http({
method: 'GET', url: 'http://localhost:8080/api/ServiceRequests'
}).success(function (data, status, headers, config) {
for (var key in data) {
_result.push(data[key]);
} console.log(_result)
return _result;
}).error(function (data, status, headers, config) {
return status;
});
};
return {
postServiceRequest: postServiceRequest, getServiceRequests: getServiceRequests, result: _result
};
});
答案 0 :(得分:0)
在填充之前将其重新定义为空数组:
...
$http({
method: 'GET', url: 'http://localhost:8080/api/ServiceRequests'
}).success(function (data, status, headers, config) {
_result = []; // <---- this is the key!
for (var key in data) {
_result.push(data[key]);
...