Ho bisogno di sapere come implementare salvare e ripristinare lo stato nella griglia angularui senza utilizzare alcun pulsante. Ho bisogno di salvare automaticamente lo stato ogni volta che apportiamo modifiche alla griglia. Dobbiamo anche ripristinare automaticamente lo stato salvato. Anche se aggiorniamo la pagina, lo stato salvato dovrebbe essere ripristinatogriglia angolare UI salva e ripristina stato
risposta
Ecco cosa ho capito. Non sono riuscito a trovare un singolo evento per le modifiche allo stato della griglia, ma sembra che abbiano eventi singoli per quasi tutto. Ecco alcuni che sto usando. Ho appena impostato un punto di interruzione nel callback onRegisterApi e ho scavato attraverso l'oggetto gridApi per trovare gli eventi. http://plnkr.co/edit/LAMZvOkpx6jsD4CWSz04?p=preview
HTML:
<div ui-grid="gridOptions"
ui-grid-selection
ui-grid-resize-columns
ui-grid-auto-resize
ui-grid-move-columns
ui-grid-grouping
ui-grid-save-state>
</div>
JS:
$scope.gridOptions = {
data: [
{ name: 'Jack', title: 'manager', phone: '123456789', location: 'india'},
{ name: 'Suzy', title: 'developer', phone: '465189798', location: 'usa'},
{ name: 'George', title: 'secretary', phone: '82656517', location: 'japan'},
{ name: 'Michael', title: 'analyst', phone: '31321687', location: 'egypt'},
{ name: 'Sara', title: 'consultant', phone: '59595847', location: 'germany'},
{ name: 'Chris', title: 'engineer', phone: '789456123', location: 'russia'},
{ name: 'Elizabeth', title: 'clerk', phone: '963852741', location: 'china'},
{ name: 'Jane', title: 'intern', phone: '147258369', location: 'australia'},
{ name: 'Bill', title: 'accountant', phone: '951487623', location: 'brazil'}
],
columnDefs: [
{ name: 'name' },
{ name: 'title' },
{ name: 'phone' },
{ name: 'location' }
],
enableGridMenu: true,
enableRowSelection: true,
enableRowHeaderSelection: false,
enableColumnResizing: true,
enableColumnReordering: true,
enableFiltering: true,
onRegisterApi: function(gridApi) {
// Keep a reference to the gridApi.
$scope.gridApi = gridApi;
// Setup events so we're notified when grid state changes.
$scope.gridApi.colMovable.on.columnPositionChanged($scope, saveState);
$scope.gridApi.colResizable.on.columnSizeChanged($scope, saveState);
$scope.gridApi.grouping.on.aggregationChanged($scope, saveState);
$scope.gridApi.grouping.on.groupingChanged($scope, saveState);
$scope.gridApi.core.on.columnVisibilityChanged($scope, saveState);
$scope.gridApi.core.on.filterChanged($scope, saveState);
$scope.gridApi.core.on.sortChanged($scope, saveState);
// Restore previously saved state.
restoreState();
}
};
function saveState() {
var state = $scope.gridApi.saveState.save();
localStorageService.set('gridState', state);
}
function restoreState() {
$timeout(function() {
var state = localStorageService.get('gridState');
if (state) $scope.gridApi.saveState.restore($scope, state);
});
}
Il wrapping della funzione restoreState con $ timeout è la chiave, poiché non applicherebbe lo stato ripristinato senza aggiungerlo. I cookie – Schreinbo
non riuscivo a trovare un singolo evento per i cambiamenti di stato della griglia =>
window.onbeforeunload = function(e) {
$scope.saveState();
};
$scope.restoreState();
nel caso in cui si desidera ripristinare la griglia
if(localStorage.getItem("justReset")!="1")
$scope.restoreState();
localStorage.setItem("justReset","0")
Ecco un servizio facile da usare con localforage
angular.module('starter.controllers')
.factory('SaveStateGridService', function SaveStateGridService($timeout, $state, $rootScope) {
var self = {
stateName: null,
keyLocalStorage: null,
listener: null,
init: function (gridApi) {
self.stateName = $state.$current.name;
self.keyLocalStorage = 'grid-' + self.stateName;
if (self.keyLocalStorage != null) {
// save the state before we leave
self.listerner = $rootScope.$on('$stateChangeStart',
function (event, toState, toParams, fromState, fromParams, options) {
if (fromState.name === self.stateName) {
var item = gridApi.saveState.save();
localforage.setItem(self.keyLocalStorage, item);
}
self.listerner();
}
);
//restore the state when we load if it exists
localforage.getItem(self.keyLocalStorage, function (err, item) {
if (item != null) {
$timeout(function() {
gridApi.saveState.restore(null, item);
}, 1);
}
});
}
}
};
return self;
});
Controller/Component
$scope.gridOptions.onRegisterApi = function (gridApi) {
SaveStateGridService.init(gridApi);
};
Html
<div
ui-grid="gridOptions"
ui-grid-save-state></div>
è relativamente facile per salvare lo stato utilizzando angolari $ cookie
function saveState() {
var state = $scope.gridApi.saveState.save();
$cookies.put('gridState', JSON.stringify(state));
}
Poi, per ripristinare:
$scope.restoreState = function() {
$timeout(function() {
var state = JSON.parse($cookies.get('gridState'));
if (state) {
$scope.gridApi.saveState.restore($scope, state);
}
non funzionano: angular.js: 14791 Cookie 'gridState' potrebbe non essere impostato o overflow perché era troppo grande (9040> 4096 byte)! – Slava
- 1. Salva e ripristina stato vim
- 2. Dagger 2 Salva e ripristina stato quando l'attività si arresta
- 3. Configurazione evento doppio clic griglia angolare ui
- 4. salva e ripristina le variabili shell
- 5. contenteditable testo selezionato salva e ripristina
- 6. Salva canvas, quindi ripristina, perché?
- 7. UI angolare Spazio griglia tra lettere maiuscole nell'intestazione
- 8. Come utilizzare la griglia UI angolare con paging lato server
- 9. Impostazione della larghezza della colonna nella griglia ui angolare
- 10. Griglia UI angolare - Come personalizzare il comportamento delle righe aggregate
- 11. Griglia UI angolare - stile il menu colonna/applica un modello
- 12. Come rendere la griglia ui Angolare inizialmente tutte le righe?
- 13. filtro ui-griglia angolare/ng-griglia. Frequenza di sparo troppo frequente
- 14. UI-Router angolare: più URL a stato singolo
- 15. Ui-router angolare: come impedire l'accesso a uno stato
- 16. Come impostare uno stato predefinito con ui-router angolare
- 17. Router angolare UI - Parametri dello stato di accesso nel genitore
- 18. Griglia UI angolare: aggiunta di campi personalizzati in columnDefs e accesso dal modello di intestazione
- 19. angolari tabelle ui-griglia scorrimento laterale
- 20. angolare Bootstrap Ui-select
- 21. UI di Kendo + Angolare
- 22. callback angolare ui ordinabile
- 23. angolare ui-utils scrollfix
- 24. angolare-UI modale risolvere
- 25. ripristina 'non valido' con la griglia non ritorna alla posizione iniziale con jQuery UI Draggable
- 26. Angolare UI Tooltip schermo overdrowing
- 27. Frammenti ripristina stato sull'orientamento modificato
- 28. angolare ui-grid pulsanti di esportazione esterno
- 29. evento selezione griglia angolare kendoui
- 30. angolare UI-Grid: Come cancellare tutto (generale angolare e built-in UI-Grid) Filtri colonna a fare clic sul pulsante
io non sono sicuro perché sei stato giù votato. Sto anche cercando di capirlo. Hai avuto fortuna? –