2

RESTAdapterを利用するember.jsとember-dataの最新バージョンで、hasMany/belongsTo関係の動作するjsfiddleを見つけたり、まとめたりするために、私は最善を尽くしています。これまでのところ、新しいルーターを調査する @zgramana による pre.4 ベースライン フィドルと、必要な DS 関係を利用するが簡潔にするためにルーターをバイパスする@sly7-7 フィドルを見つけました。

これらをまとまりのある例にまとめようとする私の手探りの WIP の試みは、http: //jsfiddle.net/W2dE4/5/にあります。私は明らかに ember.js の初心者であり、このフィドルはエラーだらけです。そのため、スキルの欠如を許してください。

App.Store = DS.Store.extend({
  revision: 11,
  adapter: DS.RESTAdapter.create({})
});

App.Post = DS.Model.extend({
    title: DS.attr('string'),
    post: DS.attr('string'),
    comments: DS.hasMany('App.Comment')
});


App.Comment = DS.Model.extend({
    post: DS.belongsTo('App.Post'),
    description: DS.attr('string')
});

store = App.__container__.lookup('store:');

store.load(App.Post, {
    id: 1,
    title: 'Post 1 Title',
    post: 'Body of post 1',
     comments:[1,2]
    },
       {
    id: 2,
    title: 'Post 2 Title',
    post: 'text of post 2',
     comments:[3,4]
},
{
    id: 3,
    title: 'Post 3 title',
    post: 'text of post3',
     comments:[5,6]
}
      );
store.load(App.Comment, {id: 1, description: "Great post!"},
       App.Comment, {id: 2, description: "Post sucks."},
       App.Comment, {id: 3, description: "Nice style"},
       App.Comment, {id: 4, description: "Horrible writing"},
       App.Comment, {id: 5, description: "Ember.js FTW"},
       App.Comment, {id: 6, description: "Get up get out n' get something"}

      );

誰かがこのフィドルを機能させるための正しい方向を教えてくれたり、RESTAdapter と hasMany の関係を持つ pre.4 の実際の例にリンクしたりできれば、あなたの寛大さに永遠に感謝します。

よろしくお願いします!

4

1 に答える 1

4

あなたのフィドルで起こっている構文の問題はほんのわずかでした。ここで動作するバージョンで更新しました:http://jsfiddle.net/W2dE4/6/

1)ストアを正しくロードしていませんでした。同じ呼び出しで複数のアイテムをロードするには、loadManyを使用して、モデルクラスと配列を渡す必要があります。

したがって、代わりに:

store.load(App.Post, {
  id: 1,
  title: 'Post 1 Title',
  post: 'Body of post 1',
   comments:[1,2]
},
{
  id: 2,
  title: 'Post 2 Title',
  post: 'text of post 2',
  comments:[3,4]
},
{
  id: 3,
  title: 'Post 3 title',
  post: 'text of post3',
   comments:[5,6]
});

store.load(App.Comment, {id: 1, description: "Great post!"},
  App.Comment, {id: 2, description: "Post sucks."},
  App.Comment, {id: 3, description: "Nice style"},
  App.Comment, {id: 4, description: "Horrible writing"},
  App.Comment, {id: 5, description: "Ember.js FTW"},
  App.Comment, {id: 6, description: "Get up get out n' get something"}
);

そのはず:

store.loadMany(App.Post, [
  { id: 1, title: 'Post 1 Title', post: 'Body of post 1', comments: [1,2] },
  { id: 2, title: 'Post 2 Title', post: 'text of post 2', comments: [3,4] },
  { id: 3, title: 'Post 3 title', post: 'text of post 3', comments: [5,6] }
]);

store.loadMany(App.Comment, [
  { id: 1, description: "Great post!" },
  { id: 2, description: "Post sucks." },
  { id: 3, description: "Nice style" },
  { id: 4, description: "Horrible writing" },
  { id: 5, description: "Ember.js FTW" },
  { id: 6, description: "Get up get out n' get something" }
]);

2)#eachへのハンドルバーテンプレートの呼び出しが間違ったプロパティを参照していました。

それ以外の:

{{#each comment in post.comments}}
  {{comment.description}}
{{/each}}

そのはず:

{{#each comment in content.comments}}
  {{comment.description}}
{{/each}}

投稿データを保持するのはcontentプロパティです。

乾杯!

于 2013-01-24T19:46:54.603 に答える