在通过页面Ember转换时保留表单数据

时间:2016-05-03 22:12:26

标签: ember.js ember-data

我有一个注册表单页面,以及一些链接,条款和条件页面。当我点击这个条款和条件链接时,它打开了另一个页面,当我回到注册页面时,我放在表单上的数据不再存在。 我的注册路线如下:

import Ember from 'ember';

export default Ember.Route.extend({

    model() {
         return this.store.createRecord('post');
    },
    actions:{
        createPost(post){
            post.save().then(function(){
                 //on success
            },function(message){
                 //on error
            });
        }

    }
});

我回去后如何保存数据?

1 个答案:

答案 0 :(得分:0)

您需要在单例中创建记录,该单例将是Ember案例​​中的控制器或服务,然后在模型钩子中返回该记录。看一下这个twiddle的工作示例。您需要的代码的快速示例:

//services/persistance-helper.js
export default Ember.Service.extend({

  store: Ember.inject.service(),

  rememberRecord(type, record){
    this.set(type,record)
  },

  retrieveRecord(type){
    const record = this.get(type)
    console.log('record:',record)
    if(record){
      return record
    }else{
      return this.get('store').createRecord(type)
    }
  },

  removeRecord(type){
    this.set(type,null)
  }
})
  

//routes/post.js
export default Ember.Route.extend({

  persistanceHelper: Ember.inject.service(),

  model(){
    return this.get('persistanceHelper').retrieveRecord('post')
  },

  actions:{

    willTransition(){
      console.log()
      if(this.currentModel.get('dirtyType') === 'created'){
        this.get('persistanceHelper').rememberRecord('post',this.currentModel)
      }else{
        console.log('else:',this.currentModel.get('dirtyType'))
        console.log('record was saved ?')
      }
    },

    save(){
      this.currentModel.save().then((record)=>{
            this.get('persistanceHelper').removeRecord('post')
      })
    }
  }

})

我认为代码的描述性足以不添加更长的解释:)