如何在保存后将记录添加到商店

时间:2013-10-28 12:45:52

标签: ember.js ember-data

使用以下语法创建记录,将其添加到Store immidiatly:

store.createRecord('post', {title: "Rails is omakase"});

在服务器上成功存储记录的方法是什么,然后才将其添加到商店?

我希望store.createRecord返回一个promise。非常混乱。

2 个答案:

答案 0 :(得分:1)

有人可能会争辩说,在本地商店中拥有“潜在”记录不是问题,而是将它们显示在用于显示已保存记录的列表中。

所以,当我只想显示已保存的记录时,我制作了一个组件:

应用/组件/每-saved.js

import Ember from 'ember';

const EachSavedComponent = Ember.Component.extend({

  tagName: '',

  savedRecords: Ember.computed.filterBy('records', 'isNew', false)

});

EachSavedComponent.reopenClass({
  positionalParams: ['records']
});

export default EachSavedComponent;

应用/模板/组件/每-saved.hbs

{{#each savedRecords as |record|}}
  {{yield record}}
{{/each}}

<强>用法

<div class="CARD">
  <table class="LIST">
    {{#each-saved model.users as |user|}}
      <tr>
        <td class="LIST-cell">{{user.name}}</td>
        <td class="LIST-cell--right"><a href="" class="BUTTON">Remove</a></td>
      </tr>
    {{/each-saved}}
  </table>
</div>

我不需要它到处都有,有些情况下我希望未保存的记录显示在列表中。

答案 1 :(得分:0)

对于你提到的内容,我猜你是直接调用服务器(而不是通过REST适配器)。如果是这种情况,您可以:

var store = store;
$.ajax(url, {type: 'POST', success: function (savedRecord) {
  var pushedRecord = store.push(App.MyModel, savedRecord);
  pushedRecord.save();
});