私はEmberにダイビングしています。私はバニラオブジェクトのプレーンな配列をコレクション/コントローラに渡し、正しいモデルに型キャストする方法を探しています。ここでEmberオブジェクトへのバニラオブジェクトの自動型キャスト
は、単純なコレクションビューです:
{{#collection id="prods" contentBinding="Vix.prodsController" tagName="ul"}}
{{content.title}}
{{/collection}}
は、こちらのモデルです:
Vix.Prod = Ember.Object.extend({
id: null,
title: null
});
とコントローラ:
Vix.prodsController = Ember.ArrayController.create({
content: []
});
その後のは、サーバーからいくつかのJSON形式のデータを取得してみましょう。この例では、ハードコードするだけです:
var prods = [{id:"yermom1", title:"yermom 1"}, {id:"yermom2", title:"yermom 2"}]
Vix.prodsController.set('content', prods);
これまでのところとても良いです。私はli
要素の私の単純なリストを私が期待しているようにタイトルを表示します。しかし、私は使用して、オブジェクトのいずれかのタイトルを更新したいとき:それは正しく私のVix.Prod
エンバーオブジェクトにキャストされていないmethod--オブジェクトがset
を持っていないので、
Vix.prodsController.objectAt(0).set('title', 'new title')
それは文句を言います。この代替使用
:
Vix.prodsController.pushObjects(prods);
は、同じ結果を生成します。
var prods = [Vix.Prod.create({id:"yermom1", title:"yermom 1"}), {Vix.Prod.create(id:"yermom2", title:"yermom 2"})]
自動的に私のVix.Prodエンバーオブジェクトにそれらのバニラオブジェクトをキャストタイプする方法はあります:私は明示的に私はget/set
良さを取得し、新たなモデルインスタンスを作成する場合にのみですか?もしそうでなければ、本当に欲しいのは私だけですか?バックボーンでは、コレクションにmodel
プロパティを設定できます。似たようなことをするために私のコントローラ上にセッターを作ることができると思います。私が欠けているものがあるかどうか疑問に思っています。ありがとう!
これはもう機能していないようです。私がこれを試してみると、あなたはモデル上で「作成」と呼ぶべきではありません。代わりに、設定したい属性で 'store.createRecord'を呼び出します.' –