2016-05-03 9 views
0

私は登録フォームページと、そのページ上の利用規約ページにいくつかのリンクがあります。この利用規約のリンクをクリックすると、この他のページが開き、フォームに登録したデータを登録ページに戻すと、フォームにはそれ以上は表示されません。 マイレジスタルートは次のようになります。ページ間の遷移時にフォームデータを保持するEmber

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 
      }); 
     } 

    } 
}); 

どのように私が戻ったときに、私は、データを保存することができますか?

答えて

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') 
     }) 
    } 
    } 

}) 

私は、コードが長く説明:)

を追加しないために十分説明的だと思います
関連する問題