Ember js克隆记录与关系

时间:2015-04-01 01:22:50

标签: ember.js ember-data

我尝试实现的目标:用户进入发布/ 3 /编辑。这里的表单绑定到模型,因此它已经填写完毕。在顶部

You are editing the post {{model.title}}

如果用户更改了标题,则会更改为动态。我不想要这种行为。如果用户已经点击“保存”按钮(并且一切都在服务器端正确),我想将更改应用于记录。

我的想法:

  1. 克隆记录
  2. 将克隆记录绑定到表单
  3. 点击“保存”后,克隆(和编辑)记录的属性将应用于原始记录。
  4. 问题

    • 这是正确的方法吗?
    • 是否有类似record.clone()的内容,它会将记录与其关系进行深层复制
    • 有没有办法应用更改,例如originalRecord.apply(clonedRecord)

1 个答案:

答案 0 :(得分:0)

假设您使用的是Ember数据:

更简单的方法可能是在帖子编辑路线中使用setupController挂钩:

// routes/posts/edit.js
export default Ember.Route.extend({
  setupController: function (controller, model) {
    this._super(controller, model);
    this.controller.set('staticTitle', model.get('title'));
  }
});

然后在你的模板中:

{{staticTitle}}

然后当您提交表单时,请在成功保存后将静态标题重置为新值:

// controllers/posts/edit.js
.
.
.
actions: {
  savePost: function() {
    var controller = this;
    var post = this.get('model');
    function onSuccess(savedPost) {
      controller.set('staticTitle', savedPost.get('title');
      //transition somewhere
    }
    function onFailure() {
      post.rollback()
    }
    post.save().then(onSuccess, onFailure);
  }
}