2016-11-30 6 views
0

これは非常に些細なことですが、私は厄介なように感じていますが、電流を保存した後に新鮮なモデルを作成することはできません。Emberjsは保存後に新しいモデルを作成します

と思うあなたは、新しいタスクを追加しておきたいのToDoアプリ、:

私が正しく保存されます非常に単純なルートを持っていますが、新モデルでフロントエンドを更新しません

model() { 
    return RSVP.hash({ 
     distro: get(this, 'store').createRecord('distro'), 
    }); 
    }, 

    setupController(controller, models) { 
    controller.setProperties(models); 
    }, 

    actions: { 
    saveDistro(distro) { 
     let newDistro = get(this, 'store').createRecord('distro'); 

     distro.save().then(() => { 
     set(this, 'distro', newDistro); 
     }); 
    }, 
    } 

I私はちょうどここに明らかに欠けていると思いますか?

+0

を「作ることができないように」と正確にはどういう意味ですか? – Serge

答えて

0

ここには2種類の異なるdistrosが作成されています。最初のものはコントローラに渡されて表示されるもので、2番目のものはアクションsaveDistro()で作成されたものです。

一般的に、model()フックに新しいレコードを作成する必要はありません。これはデータの検索を目的としています。私はあなたが最初のディストリビューションを使用してコントローラとビューでやっている、私はそれにコメントすることはできませんわからないんだけど、私はこのような何かをお勧めしたいので:

EDIT:

// Controller 
init() { 
    this._super(...arguments) 
    this.set('formAttrs', { 
    attr1: null, 
    attr2: null 
    // ... 
    }) 
}, 

actions: { 
    saveDistro() { 
    const attrs = this.get('formAttrs') 
    this.send('saveDistro', attrs) 
    } 
} 

// Model 
actions: { 
    saveDistro(attrs) { 
    let newDistro = get(this, 'store').createRecord('distro', attrs); 

    distro.save().then(() => { 
     // transition to new distro route 
    }); 
    } 
} 
+0

応答をありがとう、それは単純な "新しい"ルートを作成するので、私はすべての現在のディストリビューションを取得したいとは思わない?しかし、データを保存するためのモデルが必要なので、モデルフック –

+0

gotchaに作成してください。データを保存するためのフォームを作成するモデルは必要ありません。実際、私はあなたにそれをしないように強く勧めます。代わりに、あなたのコントローラで、値を保持するフォームattrsオブジェクトを作成し、その値を使って新しい 'distro'を作成します。 – xcskier56

+0

私が話していることを反映するために答えを更新しました – xcskier56

関連する問題