Emberjs保存

时间:2016-11-30 21:25:10

标签: ember.js ember-data

这看起来非常微不足道,我觉得很尴尬,但我似乎无法在保存当前后创建一个新模型。

想想todo app,你想继续添加新任务:

我有一个非常简单的路线可以正确保存,但不会使用新模型更新前端

  model() {
    return RSVP.hash({
      distro: get(this, 'store').createRecord('distro'),
    });
  },

  setupController(controller, models) {
    controller.setProperties(models);
  },

  actions: {
    saveDistro(distro) {
      let newDistro = get(this, 'store').createRecord('distro');

      distro.save().then(() => {
        set(this, 'distro', newDistro);
      });
    },
  }

我想我只是错过了这里显而易见的事实?

1 个答案:

答案 0 :(得分:0)

您在这里创建了两个不同的distros。第一个是传递给控制器​​以显示的内容,第二个是在操作saveDistro()中创建的内容。

通常,您不希望在model()挂钩中创建新记录。这是为了查找数据。由于我不确定你在你的控制器中做了什么,并查看了第一个发行版,我不能对此发表评论,但我建议这样:

编辑:

// Controller
init() {
  this._super(...arguments)
  this.set('formAttrs', {
    attr1: null,
    attr2: null
    // ...
  })
},

actions: {
  saveDistro() {
    const attrs = this.get('formAttrs')
    this.send('saveDistro', attrs)
  }
}

// Model
actions: {
  saveDistro(attrs) {
    let newDistro = get(this, 'store').createRecord('distro', attrs);

    distro.save().then(() => {
      // transition to new distro route
    });
  }
}