当前位置: 首页 > 面试题库 >

angularjs和localStorage更改事件

陆翔飞
2023-03-14
问题内容

我将一些数据存储在localStorage中

我想在我的angularjs应用程序中看到的是,当localStorage中的数据更改时,该应用程序会重新渲染该应用程序,我该怎么做?


问题答案:

有一个角度的localStorage模块:

https://github.com/grevory/angular-local-
storage

var DemoCtrl = function($scope, localStorageService) {

  localStorageService.clearAll();

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

  $scope.storageType = 'Local storage';

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

};

经过进一步考虑,您可能需要将模块更改为在setItem上广播,以便在localStorage发生更改时得到通知。也许在第50行附近分叉:

localStorage.setItem(prefix+key, value);
$rootScope.$broadcast('LocalStorageModule.notification.setItem',{key: prefix+key, newvalue: value});  // you could broadcast the old value if you want

或在库的最新版本中,更改了大小写

$rootScope.$broadcast('LocalStorageModule.notification.setitem',{key: prefix+key, newvalue: value});

然后,在您的控制器中,您可以:

$scope.$on('LocalStorageModule.notification.setItem', function(event, parameters) {
   parameters.key;  // contains the key that changed
   parameters.newvalue;  // contains the new value
});

这是第二个选项的演示:演示:http :
//beta.plnkr.co/lpAm6SZdm2oRBm4LoIi1

更新

我分叉了该项目,并在您要使用该项目的事件中包括了以下通知:https : //github.com/sbosell/angular-
local-
storage/blob/master/localStorageModule.js

我相信原始图书馆接受了我的PR。我喜欢这个库的原因是,如果浏览器不支持本地存储,它具有cookie备份。



 类似资料:
  • 问题内容: 如何在AngularJs中取消路线更改事件? 我当前的代码是 即使验证失败,Angular也会提取下一个模板和关联的数据,然后立即切换回上一个视图/路线。如果验证失败,我不希望angular提取下一个模板和数据,理想情况下应该没有window.history.back()。我什至尝试过event.preventDefault()但没有用。 问题答案: 代替使用 这是angularjs专

  • 问题内容: 我正在寻找一种观察窗口内部宽度大小变化的方法。我尝试了以下操作,但没有成功: 有什么建议? 问题答案: 我们可以使用jQuery来做到这一点: 请注意,将事件处理程序绑定在可以 重新创建的 范围内(例如ng- repeat范围,指令范围等)时,在销毁该范围时应取消绑定事件处理程序。如果不执行此操作,则每次重新创建作用域(重新运行控制器)时,都会再添加1个处理程序,从而导致意外行为和泄漏

  • 问题内容: 如何使用jQuery将函数绑定到HTML5 localStorage更改事件? 我已经尝试了上述方法,但没有显示警报。 更新 :它可以在Firefox 3.6中运行,但不能在Chrome8或IE8中运行,因此问题应该更多是“如何在所有浏览器上使用jQuery绑定到localStorage更改事件?” 问题答案: 事实证明,这实际上是正确的,并且我误解了规范 当在与本地存储区域相关联的存

  • 问题内容: 如何停止事件的处理或切换事件的功能? 修改后的代码: 问题答案: 您只需使用事件的新功能再次调用即可。既然你没有利用第三个参数,在此只是简单地覆盖任何已经存在。默认情况下,此参数为,但它也接受,它将在该事件已触发的回调中添加回调。 但是,如果您开始使用该可选参数,则需要使用该函数删除单个回调。当你调用一个返回。您可以将此作为第二个参数传递给。 例:

  • 问题内容: 我有一个指令可以遍历链接元素的 children 。 但是,尚未将子级加载到DOM中,因为尚未解析其s表达式。 如何确定父指令知道它的DOM树已更改? 我可以使用,但是感觉不可靠。我也可以用代替,但这不能回答问题,也不是我所需要的。 问题答案: 所以这就是我最终要做的事情: 我发现您可以将函数传递给。从那里,很容易返回想要监视更改的表达式的值。它的工作原理就像在范围上传递属性的键字符串

  • 问题内容: 此处使用复选框状态更新文本框值。我用来确认取消选中的操作。如果用户选择“取消”,则复选标记会恢复,但会在确认前触发。 这会使事情处于不一致状态,并且选中复选框时文本框会显示false。 如何处理取消并保持文本框值与检查状态一致? 问题答案: 在JSFiddle中进行了测试,可以满足您的要求。这种方法的附加好处是,当单击与复选框关联的标签时,可以触发。 更新的答案: 原始答案: