Ember-data根据属性加载异步和订单结果

时间:2014-09-12 00:04:49

标签: asynchronous ember.js ember-data

我正在学习ember / ember-data,想从服务器获取一些数据并订购它。

我的json数据类似于

{
  'ninjas': [
    { id: '1', name: 'Ninja 1', age: 23},
    { id: '2', name: 'Ninja 2', age: 27},
    { id: '3', name: 'Ninja 3', age: 22}
  ],
  'clans': [
    { id: '1566', title: 'Foot Clan', ninja_ids: ['1', '2']},
    { id: '8941', title: 'Hand Clan', ninja_ids: ['3']}
  ]
}

模板是

<script type="text/x-handlebars" data-template-name="clans">
  <div>Clans</div>
  <ul>
    {{#each controller}}
      <li>
        {{#link-to 'clan' this}}{{title}}{{/link-to}}
      </li>
    {{/each}}
  </ul>
</script>

<script type="text/x-handlebars" data-template-name="clan">
  <div>{{title}}</div>

  {{#each fetchedNinjas}}
    <ul>
      <li>{{fetchedNinjas}}</li>
    </ul>
  {{/each}}
</script>

这是基本的App脚本:

var App = Ember.Application.create();

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

App.Router.map(function() {
  this.resource('ninjas');
  this.resource('clans');
  this.resource('clan', {path: 'clans/:clan_id'});
});

忍者脚本在这里:

App.Ninja = DS.Model.extend({
  name: DS.attr('string'),
  age: DS.attr('number'),
  clans: DS.hasMany('clan')
});

App.NinjasRoute = Ember.Route.extend({
  model: function (params, transition, queryParams) {
    return this.store.find('ninja');
  }
});

这是Clan Model,ClansRoute,ClanRoute

App.Clan = DS.Model.extend({
  title: DS.attr('string'),
  ninjas: DS.hasMany('ninja', {async: true})
});

App.ClansRoute = Ember.Route.extend({
  model: function (params, transition, queryParams) {
    return this.store.find('clan');
  }
});

App.ClanRoute = Ember.Route.extend({
  model: function (params, transition, queryParams) {
    return this.store.find('clan', params.clan_id);
  }
});

我认为我应该在ClanController上获取相关的忍者数据然后订购它,但我不知道如何继续。

App.ClanController = Ember.ObjectController.extend({
  fetchedNinjas: function () {
    //should I use a promise here?
  }.property('ninjas')
});

0 个答案:

没有答案