Как использовать $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
            });
Другие вопросы по тегам