2016-12-30 3 views
1

ember 2.10アプリケーションの作成に関するチュートリアルに従っています。私は、私の連絡先コントローラから私の検証ロジックを移動し、私の連絡先モデルの中に配置しました。私は自分の行動(saveContact)を連絡先ファイルに配置しました。 新しい連絡先をエラーなくFirebaseデータベースに保存できます。私は私のフォームをクリアする方法に立ち往生しています。Ember 2.10のフォームフィールドのクリア

マイ接触ルート・ファイルは、私は、フォームの現在の値を取得し、空の文字列へのメッセージと電子メールの両方を設定しようとしている

import Ember from 'ember'; 

export default Ember.Route.extend({ 

    model() { 
    return this.store.createRecord('contact'); 
    }, 

    actions: { 

    saveContact(newContact) { 
     newContact.save().then((response) => { 
     const email = this.get('model.email'); 
     const message = this.get('model.message') 
     this.set('email', ''); 
     this.set('message', ''); 
     }) 
    } 

    } 

}); 

のように見えます。

私はテストを実行してコンソールにログを記録し、コンソールは未定義に戻ります。

入力フィールドでは、渡される値はmodel.emailとmodel.messageです。

他に誰かがこの問題を抱えていますか?このルート上でモデルをリフレッシュするために

+1

'this.set( 'model.email'、 ''); this.set( 'model.message'、 ''); 'または単にthis.refresh()にモデルフックを呼び出すと、新しいフレッシュコンタクトモデルが得られます。 – kumkanillam

+0

ありがとうございます。 this.refresh()は機能しました。 this.set( 'model.email、' ')とthis.set(' model.message '、' ')私が最初に試したこと。私はフォームの値を提出することができますが、ページはリセットせずに凍ってしまいました。 –

+0

モデル関数に新しいレコードを作成するのは少し奇妙です。ストア内のレコードを(保存せずに)作成することは、非同期処理ではありません。だからモデルだけでなく、どこでもそれを行うことができます。 'model()'フックの目的は、api/database/fileから何かをロードすることです。私はあなたの場合、連絡フォームのコンポーネントを持っている必要があり、連絡フォームのロジック全体を実装する必要があると思います。このコンポーネントを既にお持ちの場合は、貼り付けることができます。コードを改善するために何ができるかを見ていきます。 –

答えて

0

は、新しい連絡先のモデルを取得するので、これはbeforeModelmodel、およびafterModelフックを発射します

this.refresh() 

を呼び出してみてください。 Reference

関連する問題