7

私は残り火に不慣れで、それがどのように機能するかを理解しようとします。

アダプターとしてfixturesAdapterを使用してストアを定義しました(rev7)。私は2つのモデルを定義しました:

App.Tag = DS.Model.extend({
    name: DS.attr('string'),
    item: DS.belongsTo('App.Item')
});

と:

App.Item = DS.Model.extend({
    name: DS.attr('string'),
    tags: DS.hasMany(App.Tag, { embedded:true }),
})

また、関連するフィクスチャと、最後にコントローラを入力します。

App.itemsController = Ember.ArrayController.create({
    content: App.store.findAll(App.Item)
});

App.Itemモデル内で関数を定義しました。

tagline: function(){
    return this.get('tags').toArray().map(function(tag){
        return tag.get('name');
    }).join(',');
}.property('tags.@each.isLoaded')

対応するjsfiddleは次のとおりです。http://jsfiddle.net/K286Q/29/

私の質問は次のとおりです。

  • 私は何が間違っているのですか?
  • 最初のアイテムに関連付けられた複数のタグが表示されるのに、名前を取得できないのはなぜですか?
4

1 に答える 1

8

現在のバージョンのember-dataでいくつかの重大な変更に直面しています。

1つ目は、ember-dataのリビジョン6以降、IDは文字列で正規化されており、フィクスチャで文字列として表す必要があるということです。RESTアダプターは数値/文字列を変換しますが、フィクスチャアダプターは変換を行わないことに注意してください。これは一般的な混乱の原因です(前の質問を参照)。

2つ目は、埋め込みデータオブジェクトのサポートがember-dataから一時的に削除されたことです。{embedded: true}この機能は、属性でサポートするよりも優れた方法で再導入されると確信しています。IMO、埋め込みはアダプターの問題であり、実際にはモデルの定義に属していません。

私はあなたの備品を調整し、あなたの例をここで機能させました:http: //jsfiddle.net/dgeb/zHz4Y/

于 2012-11-09T03:04:11.823 に答える