Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何缓存角度范围_Javascript_Angularjs - Fatal编程技术网

Javascript 如何缓存角度范围

Javascript 如何缓存角度范围,javascript,angularjs,Javascript,Angularjs,将角度范围从上次浏览器会话缓存到新加载会话的最佳技术是什么 可能吗 包括控制下次创建完整范围的缓存的时间 并在从后端加载新数据时覆盖加载的缓存范围?这与如何使用javascript在浏览器中缓存数据更相关 有一些解决方案可供您研究: :本地和会话存储方式 :具有Cookie回退功能的简单本地存储 :角度提供的服务包装cookies访问 Angular services可用于在同一会话内的路由之间共享作用域。但如果关闭浏览器,则需要一个本地/会话存储、cookie或服务器端解决方案 $cook

将角度范围从上次浏览器会话缓存到新加载会话的最佳技术是什么

可能吗

包括控制下次创建完整范围的缓存的时间


并在从后端加载新数据时覆盖加载的缓存范围?

这与如何使用javascript在浏览器中缓存数据更相关

有一些解决方案可供您研究:

  • :本地和会话存储方式
  • :具有Cookie回退功能的简单本地存储
  • :角度提供的服务包装cookies访问
Angular services可用于在同一会话内的路由之间共享作用域。但如果关闭浏览器,则需要一个本地/会话存储、cookie或服务器端解决方案

$cookies Cookies是一种简单的键值存储。易于使用,可快速保存数据

angular.module('cookiesExample', ['ngCookies'])
.controller('ExampleController', ['$cookies', function($cookies) {
    // Retrieving a cookie
    var favoriteCookie = $cookies.get('myFavorite');
    // Setting a cookie
    $cookies.put('myFavorite', 'oatmeal');
}]);
不要使用cookies来存储大量数据,并将其限制为每次请求时都应发送的数据,如身份验证令牌

天然气储存 AngularJS模块,使Web存储以角度方式工作。 包含两项服务:
$localStorage
$sessionStorage

通过引用钩子传递
$localStorage
(或
$sessionStorage
) 在纯JavaScript中的
$scope
下:

$scope.$storage = $localStorage;
并像你已经知道的那样使用它:

<body ng-controller="Ctrl">
    <button ng-click="$storage.counter = $storage.counter + 1">{{$storage.counter}}</button>
</body>
使用此设置,更改将在
$scope.$storage
$localStorage
,以及
localStorage
——甚至跨 不同的浏览器标签

角度本地存储模块提供多种方式来存储数据。它功能丰富,提供高级选项和定制

window.angular.module('demoModule', ['LocalStorageModule'])
    .config(function(localStorageServiceProvider) {
        localStorageServiceProvider.setPrefix('demoPrefix');
        // localStorageServiceProvider.setStorageCookieDomain('example.com');
        // localStorageServiceProvider.setStorageType('sessionStorage');
    })
    .controller('DemoCtrl',
        function($scope, localStorageService) {
            $scope.localStorageDemo = localStorageService.get('localStorageDemo');

            $scope.$watch('localStorageDemo', function(value) {
                localStorageService.set('localStorageDemo', value);
                $scope.localStorageDemoValue = localStorageService.get('localStorageDemo');
            });

            $scope.storageType = 'Local storage';

            if (localStorageService.getStorageType().indexOf('session') >= 0) {
                $scope.storageType = 'Session storage';
            }

            if (!localStorageService.isSupported) {
                $scope.storageType = 'Cookie';
            }

            $scope.$watch(function() {
                return localStorageService.get('localStorageDemo');
            }, function(value) {
                $scope.localStorageDemo = value;
            });

            $scope.clearAll = localStorageService.clearAll;
        }
    );
补充资料

缓存
$scope
$scope
内的某些数据?仅缓存作用域内的数据和作用域内的区域。如果您的目标是在应用程序中共享作用域上的数据,则您需要使用服务。“Angular服务是使用依赖项注入(DI)连接在一起的可替换对象。您可以使用服务在应用程序中组织和共享代码。”不要使用cookie。当您打开多个选项卡或尝试支持浏览器历史记录操作(如“后退”按钮或共享链接)时,会产生可怕的行为问题。本地存储也将如此。Cookie和本地存储在浏览器范围内,而您几乎可以肯定地在“页面”之间寻找每个选项卡会话的持久行为。Angular在设计的这一方面非常天真。这是千禧一代的冷融合。
$rootScope
可用于每个选项卡会话的持久性行为。Cookie还有另一个潜在的巨大缺点:它们会随每个Ajax请求一起发送。这会使您的应用程序速度变慢,安全性降低。@MichaelMikowski
$rootScope
甚至不会持续页面刷新。。。本地存储和Cookie应该用于在客户端保存数据,就像身份验证令牌一样。@MichaelMikowski OP特别提到“将角度范围从上一次浏览器会话缓存到新加载的会话”,毫无疑问他在寻找什么,尽管AngularJS上有很多问题是关于在页面(控制器)之间共享数据,这一个不是。@emilebergron已经写了25年的web应用程序,我当然知道什么时候使用cookie,并且将其用于本地存储是一种已经超过其使用寿命的黑客行为。这就是本地存储的用途。真正的开发人员甚至不需要框架和额外的库来键入
localStorage.setItem('this','that')
localeStorage.getItem('this')
。你的另一点是正确的;然而,我之所以不发表评论,是因为我看到许多Angular应用程序使用Cookies,而$rootScope应该被使用,并且我觉得它可能对某些人有用。
$scope.$storage = $localStorage.$default({
    counter: 42
});
window.angular.module('demoModule', ['LocalStorageModule'])
    .config(function(localStorageServiceProvider) {
        localStorageServiceProvider.setPrefix('demoPrefix');
        // localStorageServiceProvider.setStorageCookieDomain('example.com');
        // localStorageServiceProvider.setStorageType('sessionStorage');
    })
    .controller('DemoCtrl',
        function($scope, localStorageService) {
            $scope.localStorageDemo = localStorageService.get('localStorageDemo');

            $scope.$watch('localStorageDemo', function(value) {
                localStorageService.set('localStorageDemo', value);
                $scope.localStorageDemoValue = localStorageService.get('localStorageDemo');
            });

            $scope.storageType = 'Local storage';

            if (localStorageService.getStorageType().indexOf('session') >= 0) {
                $scope.storageType = 'Session storage';
            }

            if (!localStorageService.isSupported) {
                $scope.storageType = 'Cookie';
            }

            $scope.$watch(function() {
                return localStorageService.get('localStorageDemo');
            }, function(value) {
                $scope.localStorageDemo = value;
            });

            $scope.clearAll = localStorageService.clearAll;
        }
    );