ember.js - Ember 服务在重新加载时丢失

标签 ember.js

我将 Ember.Service 用作长期存在的 ember 对象,因为我需要它在我的应用程序的不同部分可用。

import Ember from 'ember';

export default Ember.Service.extend({
    user:null,
    updateActiveUser(user){
        this.set('user',user);
    },
    getActiveUser(){
        const user=this.get('user');
        if(user){
            return user;
        }else{
            return null;
        }   
    }
});

在我的组件上,我以这种方式请求这个用户: 从“ Ember ”导入 Ember ;

export default Ember.Component.extend({
activeUser:Ember.inject.service('active-user'),
list: [],
selectedUser:null,
didReceiveAttrs() {
    this._super();
    this.set('list',this.get('model'));
    const active=this.get('activeUser').getActiveUser();
    if(active){
        this.set('selectedUser',active);
    }else{
        this.set('selectedUser',this.get('model').objectAt(0));
    }
},
actions:{
    selectUser(user){
        this.set('selectedUser',user);
        this.get('activeUser').updateActiveUser(user);

    }
}
});

我的问题是,在我选择一个用户然后重新加载页面后,没有保存最后选择的用户,而是显示默认用户。

最佳答案

(在问题稍微改变后编辑)

您正在尝试让应用程序状态在客户端浏览器上持久保存,即使在页面刷新后也是如此。

我认为你应该考虑使用 localStorage .

在你的服务中做这样的事情:

import Ember from 'ember';

export default Ember.Service.extend({
  user: null,

  updateActiveUser(user){
    this.set('user', user);
    // persist the user's browser so it can be retrieved on reload
    localStorage.setItem('user', JSON.stringify(user));
  },

  getActiveUser(){
    var user = this.get('user');
    if (user) {
      return user;
    } else {
      // try to get the user from localStorage
      var foundUser = JSON.parse(localStorage.user);
      if (foundUser) {
        this.set('user', foundUser);
        return foundUser;
      } else {
        return null;
      }
    }   
  }
});

最后,你为什么要使用 const?如果您永远不会更改变量,则应使用它。但看起来用户会定期更换。如果您更改标记为 const 的变量,ES6 应该会抛出异常。 const - MDN

关于ember.js - Ember 服务在重新加载时丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37356050/

相关文章:

ember.js - 对不同的对象重用模型

ember.js - 在最新的 Ember 中,如何仅使用模型的 id/name 链接到路由,而不是在链接页面中提供其所有属性?

ember.js - 如何用 ember.js 做一个类似的过滤器

javascript - 如何使用 qunit 在 ember-cli 应用程序中对路由进行单元测试?

angularjs - 对 EmberJS、AngularJS 或 BatmanJS 的 TypeScript 支持

ember.js - 讨论 : How to proceed on implementing a mobile app based on Ember and Titanium?

javascript - 使用 Ember/JavaScript 的动态内容安全策略

javascript - Emberjs动态数据切换效果

javascript - 是否可以更改 Ember route 的属性?

javascript - 在 ember.js 中复制嵌套模型(成功保存后)