Как использовать $route.reload() обычно для всех контроллеров в угловых js
Для того, чтобы сохранить $rootScope
значение при обновлении [F5] мы можем использовать $route.reload
в контроллере, как показано ниже:
$scope.reloadCtrl = function(){ console.log('reloading...'); $route.reload(); }
Так как я использую так много контроллеров, есть ли способ обычно использовать в app.config()
?
2 ответа
Обновив страницу, вы сотрите свой $rootcope из памяти. Ваше приложение перезапустится.
Вы можете использовать какое-то хранилище. Таким образом, вы можете сохранить предпочтения пользователя и использовать его снова, когда он вернется к вашему приложению.
Вы можете использовать, например, $cookies или sessionStorage / localStorage.
Если вы хотите обнаружить обновление в вашем app.run, вы можете сделать это следующим образом:
В блоке app.run() вставьте зависимость '$window' и добавьте:
app.run(['$rootScope', '$location', '$window',function($rootScope,$location, $window) {
window.onbeforeunload = function() {
// handle the exit event
};
// you can detect change in route
$rootScope.$on('$routeChangeStart', function(event, next, current) {
if (!current) {
// insert segment you want here
}
});
}]);`
Вместо этого вы можете использовать угловую фабрику, чтобы иметь все значения на контроллерах.Используйте приведенный ниже код
var app = angular.module('myApp', []);
app.factory('myService', function() {
var v1;
var v2;
var v3;
return{
v1:v1,
v2:v2,
v3:v3
});
app.controller('Ctrl1', function($scope,myService) {
});
app.controller('Ctrl2', function($scope,myService) {
});
Если вы используете константы в $rootscope, вы даже можете использовать это
app.constant('myConfig',
{
v1:v1,
v2:v2,
v3:v3
});