在Ember` .findRecord`承诺中,必须克隆来自父范围的变量?

时间:2018-03-07 16:34:26

标签: ember.js scope promise ember-data es6-promise

我通过一个动作向我的路径文件发送一个普通的旧javascript对象。

在路径文件中,我正在获取记录以进行更新。 .findRecord() method返回已解决的承诺。 但是,当.then内部在then之外的父作用域中声明的变量是空对象时。

路由/ task.js

export default Route.extend({
  model (params) {
    const id = params.task_id
    return this.get('store').findRecord('task', id)
  },
  actions: {
    saveNotes (updatedTask) {

      // updatedTask is the expected object {name: "New Name}
      console.log(`updatedTask outside is:`, updatedTask);

      this.get('store').findRecord('task', taskID).then(task => {

        // updatedTask is an empty object {}
        console.log(`updatedTask inside is:`, updatedTask);

        task.setProperties(updatedTask)
        task.save()
      })
    }
  }
});

但是,如果我克隆对象,那么值是正确的。

路由/ task.js

export default Route.extend({
  model (params) {
    const id = params.task_id
    return this.get('store').findRecord('task', id)
  },
  actions: {
    saveNotes (updatedTask) {

      // updatedTask is the expected object {name: "New Name}
      console.log(`updatedTask outside is:`, updatedTask);

      let clone = Object.assign({}, updatedTask)

      this.get('store').findRecord('task', taskID).then(task => {

        // clone is the expected object {name: "New Name}
        console.log(`clone inside is:`, clone);

        task.setProperties(updatedTask)
        task.save()
      })
    }
  }
});

这是预期的行为吗?

0 个答案:

没有答案