Ember组件 - TypeError:存储未定义

Man*_*min 2 ember.js ember-data

我正在使用ember 2.3.当我尝试访问组件内的存储时,我在控制台中收到以下错误.

在此输入图像描述

这是我在component.js中尝试过的

export default Ember.Component.extend({

actions: {
  saveEmployee : function() {
      var store = this.store;

      var newEmployee = store.createRecord("employee", {
          fname: "Manu",
          lname: "Benjamin",
          email: "manu.benjamin@gmail.com",
          department: "IT Services"
      });

      newEmployee.save().then(()=> {
          console.log("Record successfully saved!!!!");
      });

  }
}
});
Run Code Online (Sandbox Code Playgroud)

我是否需要在组件中包含任何使用商店的内容?

Man*_*min 7

我试图弄清楚这种类型错误的原因.最后,我从Josh Farrant的以下博客中找到了解决方案.

https://blog.farrant.me/how-to-access-the-store-from-within-an-ember-component/

我们需要在组件中注入商店服务.

store: Ember.inject.service(),
Run Code Online (Sandbox Code Playgroud)

我们可以使用get函数在action中注入的商店,

let store = this.get('store');
Run Code Online (Sandbox Code Playgroud)

我使用上面的解决方案修改了我的代码,它对我有用.

export default Ember.Component.extend({

store: Ember.inject.service(),

actions: {

  saveEmployee : function() {
      var store = this.get('store');

      var newEmployee = store.createRecord("employee", {
          fname: "Manu",
          lname: "Benjamin",
          email: "manu.benjamin@gmail.com",
          department: "IT Services"
      });

      newEmployee.save().then(() => {
          console.log("Record successfully saved!!!!");
      });

  }
}
});
Run Code Online (Sandbox Code Playgroud)

感谢Josh Farrant的精彩博客.