Ember-data 2.0 で Ember 2.0 を使用しています。
Rails では、モデルの実際のインスタンスを使用してフォームやコンポーネントをモデル化することは非常に一般的です。フォームの場合、posts/new
を渡してテンプレートPost.new
内で使用します。form.html.erb
new Post
Ember では、呼び出しによって壊れたモデルが作成されるため、これは困難になります。代わりに、ストアを使用することをお勧めしますthis.store.createRecord('post');
。
これは問題ありませんが、分離されたコンポーネントを構築する場合はそうではありません。たとえば、ユーザーが複数のモデルを追加できるフォーム、たとえばカテゴリ作成者です。私の頭の中では、構造は次のようになります。
category-form/template.hbs
<button {{action 'addCategory'}}>Add category</button>
{{#each categories as |category|}}
{{input value=category.name}}
{{/each}}
<button {{action 'save'}}>Save</button>
次に、component.js は次のようになります。
category-form/component.js
import Ember from 'ember';
import Category from 'app/category/model';
export default Ember.Component.extend({
categories: [],
actions: {
addCategory() {
// THIS DOES NOT WORK
this.get("categories").pushObject(new Category);
},
save() {
this.sendAction("saveCategories", this.get("categories"));
}
}
});
上記の例は機能しますが、代わりにthis.store.createRecord
. しかし、私が知る限り、コンポーネントはストアにアクセスできません。これは、グローバル状態をいじるコンポーネントになるため、問題ありません。また、使用時にcreateRecord
、ユーザーがモデルを保存せずに移動すると、ストアに多くのモデルが残ってしまいます。
category-form
この例のコンポーネントを残りのグローバル状態から完全に分離したいと考えています。
私の質問は、ember ロジックを使用してこれを正しく処理するにはどうすればよいですか?