私はEmberを初めて使っているので、私のアプローチが間違っている可能性があります。 私は最新のEmber 2.9.1を使用していますEmberjs 2.0+ストアからの新しいデータでルートモデルを更新する(createRecord)
私の計画は、ルートのモデルを更新し、すべてのコンポーネントが新しく追加/保存されたアイテムをコレクションにレンダリングさせることです。
(私は()createRecordに保存を呼び出した後USERROLEの新記録と私のルートのモデル(userRoles配列)を更新したいです)。私はその後、newUserRoleを変更するコンポーネントのコントローラとカップルを持っている
model(){
// this is my "user.edit" route
let user = this.modelFor('user');
let newUserRole = this.get('store').createRecord('userRole');
newUserRole.set('user_id', user.get('id'));
return RSVP.hash({
user: user,
userRoles: store.query('userRole', { user_id: user.get('id') }),
roles: store.findAll('role'),
newUserRole: newUserRole
});
}
:
これまでのところ、私はこのようなモデルを持ってルートを持っています。私は、新しいユーザーロールを保存するためのアクションを持っているルートで :
actions: {
saveNewUserRole: function() {
let currentModel = this.modelFor('user.edit');
currentModel.newUserRole.save().then(function (newUserRole) {
currentModel.userRoles.addObject(newUserRole);
});
}
}
興味深い何が新しいアイテム(newUserRole)をコレクションに追加されるということですが、モデルのコンソールログに新しいオブジェクトであることを私に伝えますコレクション内の他のオブジェクトとは種類が異なります。 は、私は、人々が使用することを見つける燃えさしのために同じような問題を通してみる: _internalModelまたはのtoArray():hereとhereやサービスのデータを更新/保存するための(?)。
は(ものaddObject(バージョン1.3 +) にpushObject を使用してから変更し、プラスオブザーバーは変更が部品の内部でトリガーされません userRolesのリスニング、または私はのtoArray() Iを呼び出す場合質問:経路のモデルを新しいアイテムで更新してテンプレートを再レンダリングする正しい/ Emberの方法は何ですか?データにサービスを使用する必要がある場合は、すべてのアイテムをtoArray()
またはPOJOに保存しておく必要がありますか?
この回答をいただきありがとうございます。私はこのような方法でページをセットアップしようとしています。しかし、私は "user.get( 'roles')"呼び出しを行って実際にサーバーに要求することはできません。 – GogromaT
...または、むしろユーザーの呼び出しの一部として役割IDを返さなければならないのですか?私はREST Adapterを使用しています。ユーザーの一部として{roles:[role_ids]}を返さないと、emberはデータの個別リクエストを行いません。 – GogromaT
[リンクの指定](http: //emberjs.com/api/data/classes/DS.RESTAdapter.html#method_findBelongsTo)。 – Lux