Ich benutze ng-Tabelle für Admin und Benutzer mit dem gleichen Controller, gleiche Ansicht aber geladene Daten mit anderen URL, aber beim Abrufen von Daten aus dem Cache lädt es Daten aus dem Cache, (was ich will klar, wenn sich der Benutzer abmeldet)Ich benutze ng-Tabelle für Admin und Benutzer mit unterschiedlicher Quelle. Autor Daten zeigt in Admin, bis aktualisieren
-Controller
myApp.controller('listArticle', ['$scope', '$filter', 'ngTableParams', 'nameService', '$rootScope', '$location', '$timeout', '$cookieStore', 'flashService', '$templateCache',
function ($scope, $filter, ngTableParams, nameService, $rootScope, $location, $timeout, $cookieStore, flashService, $templateCache)
{
//$templateCache.removeAll();
$scope.success = {};
$scope.article = {};
$scope.article.edit = '-';
$scope.article.approve = '-';
$scope.article.view = 'view';
$scope.showAlert = true;
flashService.displayAlertMessages();
$scope.tableParams = new ngTableParams(
{
page: 1, // show first page
count: 10, // count per page
sorting: {name: 'asc'}
},
{
total: 0, // length of data
getData: function ($defer, params)
{
nameService.getData($defer, params, $scope.filter);
},
counts: [],
paginationMaxBlocks: 13
});
$scope.$watch("filter.$", function()
{
$scope.tableParams.reload();
});
}]);
Dienst
myApp.service("nameService",['$http','$filter','$cookieStore', '$rootScope', function($http, $filter, $cookieStore, $rootScope){
function filterData(data, filter)
{
return $filter('filter')(data, filter);
}
function orderData(data, params)
{
return params.sorting() ? $filter('orderBy')(data, params.orderBy()) : filteredData;
}
function sliceData(data, params)
{
return data.slice((params.page() - 1) * params.count(), params.page() * params.count());
}
function transformData(data,filter,params)
{
return sliceData(orderData(filterData(data,filter), params), params);
}
var service =
{
cachedData:[],
getData:function($defer, params, filter)
{
if(service.cachedData.length>0)
{
var filteredData = filterData(service.cachedData,filter);
transformedData = sliceData(orderData(filteredData,params),params);
params.total(filteredData.length);
$defer.resolve(transformedData);
}
else
{
var id = $cookieStore.get('userId');
if($rootScope.role == 1)
{
var url = "article/serverside/fetch-pending-list.php";
var data = "";
}
else
{
var url = "article/serverside/fetch-list.php";
var data = {id:id};
}
$http.post(url,data)
.success(function(resp)
{
var i=0;
for(i=0; i<resp.length; i++)
{
resp[i].status = parseInt(resp[i].status);
resp[i].category = parseInt(resp[i].category);
if($rootScope.role > 1)
resp[i].edit = (resp[i].status == 1)?"Edit":"";
else{
resp[i].approve = (resp[i].status == "2")?"Approve/Reject":"";
}
var j=0;
var k=0;
for(j=0;j<statusList.length;j++){
if(statusList[j]['id'] == resp[i].status)
resp[i].status = statusList[j]['title'];
}
for(k=0;k<categories.length;k++){
if(categories[k]['id'] == resp[i].category)
resp[i].category = categories[k]['title'];
}
}
angular.copy(resp,service.cachedData);
params.total(resp.length);
var filteredData = $filter('filter')(resp, filter);
transformedData = transformData(resp,filter,params);
$defer.resolve(transformedData);
});
}
}
};
return service;
}]);
Hinweisif(service.cachedData.length>0)
Dieser Ort gleiche auf beiden geladenen Daten logins.Also mögen, Wenn ich eine Form von Daten speichern und leiten die Liste ng-Tabelle nicht aktualisiert wird, da sie Daten aus dem Cache nicht von der Quelle lädt.
Warum fügst du keine Benutzeranmeldung als Parameter zu deiner Datenquellen-URL hinzu, wie 'getdata.php? Login = blabla'? – skobaljic
Ich möchte meine URL nicht so machen. Auch wenn es einen NG-Tisch gibt, muss es etwas geben, um diese Caches zu löschen, und ich frage mich, was das ist? – Abel