Tôi cần biết cách thực hiện lưu và khôi phục trạng thái trong lưới angularui mà không cần sử dụng bất kỳ nút nào. Tôi cần lưu trạng thái tự động khi chúng tôi thực hiện bất kỳ thay đổi nào trong lưới. Chúng tôi cũng phải tự động khôi phục trạng thái đã lưu. Ngay cả khi chúng tôi làm mới trang, trạng thái đã lưu sẽ được khôi phụclưới ui góc tiết kiệm và khôi phục trạng thái
Trả lời
Dưới đây là những gì tôi đã tìm ra. Tôi không thể tìm thấy một sự kiện duy nhất để thay đổi trạng thái lưới, nhưng có vẻ như họ có các sự kiện riêng lẻ cho hầu hết mọi thứ. Dưới đây là một số ít tôi đang sử dụng. Tôi chỉ cần thiết lập một điểm break trong callback onRegisterApi và đào qua đối tượng gridApi để tìm các sự kiện. 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);
});
}
Gói chức năng restoreState với $ timeout là khóa, vì nó sẽ không áp dụng trạng thái được khôi phục mà không thêm vào đó. – Schreinbo
tôi không thể tìm thấy một sự kiện duy nhất cho sự thay đổi trạng thái grid =>
window.onbeforeunload = function(e) {
$scope.saveState();
};
$scope.restoreState();
trong trường hợp bạn muốn thiết lập lại lưới
if(localStorage.getItem("justReset")!="1")
$scope.restoreState();
localStorage.setItem("justReset","0")
Dưới đây là một dịch vụ dễ sử dụng với 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;
});
điều khiển/Component
$scope.gridOptions.onRegisterApi = function (gridApi) {
SaveStateGridService.init(gridApi);
};
Html
<div
ui-grid="gridOptions"
ui-grid-save-state></div>
nó tương đối dễ dàng để tiết kiệm nước bằng cách sử dụng góc $ cookie
function saveState() {
var state = $scope.gridApi.saveState.save();
$cookies.put('gridState', JSON.stringify(state));
}
Sau đó, để khôi phục:
$scope.restoreState = function() {
$timeout(function() {
var state = JSON.parse($cookies.get('gridState'));
if (state) {
$scope.gridApi.saveState.restore($scope, state);
}
cookie không hoạt động: angular.js: 14791 Cookie 'gridState' có thể không được đặt hoặc bị tràn vì nó quá lớn (9040> 4096 byte)! – Slava
- 1. Tiết kiệm trạng thái CryptoMD5 của CryptoJS dưới dạng chuỗi và khôi phục sau
- 2. tensorflow: Tiết kiệm và khôi phục phiên
- 3. Lưu và khôi phục trạng thái vim
- 4. Khôi phục trạng thái OpenGL
- 5. Lưu trạng thái WebView và khôi phục trong ANDROID
- 6. tiết kiệm và khôi phục trạng thái xem hiện tại của một đồ thị về Tableau qua javascript API
- 7. khôi phục trạng thái echo trước đó
- 8. eclipse (Tiết kiệm trạng thái bàn làm việc)
- 9. Trạng thái tiết kiệm vòng lặp có đóng
- 10. Cách khôi phục trạng thái xem phân đoạn Android
- 11. Lỗi hoạt ảnh khôi phục trạng thái iOS
- 12. Khôi phục trạng thái UICollectionView: tùy chỉnh vị trí cuộn
- 13. Đặt lại trạng thái khôi phục mật khẩu
- 14. Khôi phục trạng thái chương trình từ tệp lõi
- 15. Khôi phục Chế độ xem về trạng thái gốc xml
- 16. EditText không khôi phục trạng thái trong DialogFragment
- 17. onCreateOptionsMenu android gọi hai lần khi khôi phục trạng thái
- 18. Khôi phục trạng thái với nhiều bảng phân cảnh
- 19. Khôi phục trạng thái trên thanh tab và điều khiển điều hướng ứng dụng
- 20. Ng lưới và ui lưới
- 21. Tiết kiệm/khôi phục biên nhận tự động gia hạn mà không trùng lặp
- 22. Lưu và khôi phục trạng thái mở rộng/thu gọn của một ExpandableListActivity
- 23. Dagger 2 Lưu và khôi phục trạng thái khi dừng hoạt động
- 24. Duy trì và khôi phục trạng thái hiện tại trong Spring Statemachine
- 25. Các vấn đề với 3D Touch và khôi phục trạng thái
- 26. Làm cách nào để khôi phục trạng thái quy trình sau sự cố?
- 27. Khôi phục trạng thái mở rộng/lựa chọn trong JTree với tải Lazy
- 28. Vá bộ nhớ thời gian chạy để khôi phục trạng thái
- 29. Tab điều hướng Android: Khôi phục trạng thái xem phân đoạn
- 30. Trạng thái thiết bị Xcode của tổ chức "TakeInstallLock" và bị treo, chỉ khắc phục hoàn toàn khôi phục iOS
Tôi không chắc chắn lý do tại sao bạn đã xuống bình chọn. Tôi cũng đang cố gắng tìm ra điều này. Bạn đã có may mắn chưa? –