モデルの属性の 1 つがテンプレート入力にバインドされている場合、モデルをすぐに永続化するためのベスト プラクティスは何ですか? あなたの意見では、それはモデルまたはコントローラーに属していますか?
オブザーバーに基づいて、このソリューションを思いつきました。
# Models
App.Foo = DS.Model.extend
bars: DS.hasMany('bars')
App.Bar = DS.Model.extend
quantity: DS.attr('number')
# Template
{{#each bar in bars}}
{{input value=bar.quantity}}
{{/each}}
# Controller
persistQuantity: ( ->
@get('bars').forEach (bar) -> bar.save() if bar.get('isDirty')
).observes('bars.@each.quantity')
しかし、これにより、何らかの理由で同じモデルに対して複数 (私にとっては 3 つ) の保存要求が発生します。
また、モデルにオブザーバーを配置しようとしましたが、これは無限ループに陥りました。
# App.Bar Model
persistQuantity: ( ->
@save()
).observes('quantity')
で修正しようとしましたEmber.run.once
が、Ember の実行ループについての理解が不十分だったようです。