Ember 1.5如何组合两个记录阵列?

时间:2014-05-02 07:38:38

标签: ember.js ember-data

在我的应用程序中,我有一个项目提要。让我们说这两项是任务和购买。

在我的Feed中,我希望这两个项目都填充按日期排序的数组。它们都具有类似的属性,例如标题和日期。至于在UI上显示它们,我毫不怀疑我能够解决这个问题。

问题在于获取记录。

store.find('task');
store.find('purchase');

这两个都返回promise数组。我假设我需要某种数组代理。但是,每当在这些数组中的任何一个对象上修改属性时,我的当前代码都不会更新数组。当对象被添加到这些商店时,它也无法正确呈现或更改。

有没有人有幸将两个记录数组合并为一个?并且让它的功能就好像它只是一个记录数组,它可以完美地随着数组和对象内的每个对象进行更新。

任何帮助表示赞赏!如果需要更多代码,我会发布!

UPDATE ::

附件是一个JSBIN,它应该显示我想要做的事情,以及它无法正常工作的事实。

http://emberjs.jsbin.com/jebugofo/2/edit?html,js,console,output

2 个答案:

答案 0 :(得分:7)

这是您的fiddle modified

我是新的ember数据。但据我所知,你正在合并2个对象。我修改了在合并之前将模型对象转换为数组。

var stream = Ember.A();
stream.pushObjects(txn.toArray());
stream.pushObjects(job.toArray());
return stream;

我还修改了你观察的属性。现在我观察模型数据。

}.property('model.purchases.@each', 'model.tasks.@each'),

答案 1 :(得分:0)

如果您询问如何在一个模型中检索任务和购买 - 您可以执行以下操作:

App.YourRoute = Em.Route.extend({  
  model: function(params) {
    return Em.RSVP.hash({
      tasks:     this.store.find('task'),
      purchases: this.store.find('purchase')
    });
 },

然后在你的模板中你可以做到

<script type="text/x-handlebars" data-template-name="index">
  <h2>Tasks:</h2>
  <ul>
    {{#each tasks}}
      <li>{{title}}</li>
    {{/each}}
  </ul>
  <h2>Purchases:</h2>
  <ul>
    {{#each purchases}}
      <li>{{title}}</li>
    {{/each}}
  </ul>
</script>