0

为了$rootScope在 refresh[F5] 上保留一个值,我们可以$route.reload在控制器中使用如下:

$scope.reloadCtrl = function(){ console.log('reloading...'); $route.reload(); } 

由于我使用了这么多控制器,有什么方法可以普遍使用app.config()吗?

4

2 回答 2

1

通过刷新页面,您将从内存中清除 $rootscope。您的应用程序重新启动。

您可以使用某种存储。这样,您可以保存用户偏好并在他返回您的应用程序时再次使用它。

例如,您可以使用 $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
        }
    });

}]);`
于 2016-11-18T06:48:51.980 回答
0

您可以使用角度工厂来获得跨控制器的所有值 使用以下代码

        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
            });
于 2016-11-18T07:03:20.823 回答