Tại sao bạn không nâng cao dịch vụ chăm sóc xóa các dữ liệu được lưu trữ khi:
- Người dùng không hoàn thành biểu mẫu và điều hướng khỏi toàn bộ quá trình gửi biểu mẫu
- Người dùng submit form
Về cơ bản, bạn có thể nâng cao dịch vụ của bạn như sau:
myApp.factory('myService', function() {
var formData = {};
return {
getData: function() {
//You could also return specific attribute of the form data instead
//of the entire data
return formData;
},
setData: function (newFormData) {
//You could also set specific attribute of the form data instead
formData = newFormData
},
resetData: function() {
//To be called when the data stored needs to be discarded
formData = {};
}
};
});
điều khiển của bạn sau đó có thể thực hiện như sau:
myApp.controller('FirstStepCtrl', ['$scope', 'myService', function ($scope, myService) {
//This is the controller of the first step in the form
//Reset the data to discard the data of the previous form submission
myService.resetData();
//Remaining Logic here
}]);
myApp.controller('LastStepCtrl', ['$scope', 'myService', function ($scope, myService) {
//This is the controller of the last step in the form
//Submits the form
$scope.submitForm = function() {
//Code to submit the form
//Reset the data before changing the route - assuming successful submission
myService.resetData();
//Change the route
};
//Remaining Logic here
}]);
lựa chọn khác là gọi hàm resetData()
của dịch vụ khi tuyến đường thay đổi thành một thứ không nằm trong ứng dụng biểu mẫu. Nếu bạn có một cái gì đó giống như một điều khiển cha mẹ cho bộ điều khiển bước Form, sau đó trong bộ điều khiển đó, bạn có thể giữ một chiếc đồng hồ trên các thay đổi tuyến đường:
$scope.$on('$routeChangeStart', function() {
//Use $location.path() to get the current route and check if the route is within the
//form application. If it is, then ignore, else call myService.resetData()
//This way, the data in the forms is still retained as long as the user is still
//filling up the form. The moment the user moves away from the form submission process,
//for example, when explicitly navigating away or when submitting the form,
//the data is lost and no longer available the next time the form is accessed
});
có thể trùng lặp [Angularjs, đi qua phạm vi giữa các tuyến] (http://stackoverflow.com/questions/13882077/angularjs-passing-scope-between-routes) –