angular如何使变量刷新页面后仍存在

想要做的效果是这样的:

clipboard.png

点击提交按钮后通过ajax操作数据库,然后将确认关联改成已关联。

但是页面刷新或者后退会重新变成确认关联。

我尝试了使用service,但是为什么刷新页面后之前service保存在object里的数据也会被重置?难道要使用$rootScope?

clipboard.png

app.service('test', function () {
  this.object = {};
  this.set = function (key, value) {
    this.object[key] = value;
    return this.object;
  };
  this.get = function (key) {
    var result = this.object[key];
    return result;
  };
  return this;
});

点击事件代码:

      test.set('isApply', 'true');
      $scope.model.isApply = forsure.get('isApply');
阅读 10.2k
8 个回答

进入页面后,没有ajax去get数据库里是否关联的值吗?
对于页面上某个可以改变的值
我一般是

  1. 初始化为空值

  2. 有必要的话ajax去取当前数据库里的值

  3. 写改变该值的函数

控制这个按钮显示状态的变量应该从服务端获取,你这么做不合理呀……

按照你的思路来说。你说的把状态保存到service是对的,可能写法又问题。set方法没有必要return 对象回来。set之后你要确定你的属性和值被保存到对象上了。建议你用this.object.isApply = true;这种形式写保存状态。

刷新页面后,js会重载,所有变量会重置!如果要记录可以用cookies或者HTMl5的sessionStorage和localStorage

我觉得楼上说的很有道理

使用$rootScope肯定不行的,因为刷新页面之后JS是重新加载执行的,angular会重新初始化,推荐存储在localstorage中,但是要注意及时清理。

可以在提交的时候把变量存到session里面,然后从服务端获取显示状态

这个最初的状态也是得从后台取的啊,如果没关联再通过ajax设置状态啊,并保存在数据库啊

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏