javascript - get 'store' 在我的适配器中未定义

标签 javascript ember.js ember-data

我正在通过我的后端向第三个 API 发出请求。 API 将一系列事件返回到我的前端,但我在将其存储在 ember DS 中时遇到问题。我的 API 请求的路线是多事的,我尝试为其创建事件的路线/模型是多事事件。我打电话:

this.get('store').createRecord('eventful-event', Concert)

在我多事的适配器中,发现“store”未定义。这是我的多事路线的代码:

import Ember from 'ember';

export default Ember.Route.extend({
  model () {
    return this.get('store');
  },

  data : {},

  ajax: Ember.inject.service(),

  actions: {
    searchForEvents (data) {
      let eventful = this.get('store').createRecord('eventful', data);
      return eventful.save();
      // .then(() => this.transitionTo('search-results'));
      // return this.get('store').findAll('eventful');
      // let something = this.get('store').findAll('eventful');
      // console.log('something:', something);
      // return eventful.save();
    }
  }
}); 

和我多事的适配器:

import ApplicationAdapter from 'ga-wdi-boston.event-bookmarker/application/adapter';
import Ember from 'ember';

export default ApplicationAdapter.extend({
  ajax: Ember.inject.service(),

  createRecord (store, type, record) {
    let serialized = this.serialize(record, { includeId: true});
    let data = { serialized };
    let dataToSend = {'keywords': record.record.keywords, 'location': record.record.location };
    return this.get('ajax').request('/eventful', {
      method: 'POST',
      data: dataToSend,
    }).then((events) => {
      events['eventful-event'].forEach(function(concert){
        this.get('store').createRecord('eventful-event', concert);
      });
    });
  }
});

这个 forEach 是抛出错误的地方。我是 ember 的新手,所以如果我忽略了一些简单的事情,或者我的方法不正确,我深表歉意。任何建议或帮助将不胜感激。

只需放入一个调试器。适配器中的“This”未定义。

最佳答案

我相信上下文是你的问题。尝试在本地函数中使用 store (适配器方法的参数)而不是 this.get('store') :

createRecord (store, type, record) {
    let serialized = this.serialize(record, { includeId: true});
    let data = { serialized };
    let dataToSend = {'keywords': record.record.keywords, 'location': record.record.location };
    return this.get('ajax').request('/eventful', {
      method: 'POST',
      data: dataToSend,
    }).then((events) => {
      events['eventful-event'].forEach(function(concert){
        store.createRecord('eventful-event', concert);
      });
    });
  }

关于javascript - get 'store' 在我的适配器中未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37665716/

相关文章:

javascript - MongoHQ Node.js 连接 URL 连接失败

javascript - 在javascript中将yyyy-MM-dd转换为MM/dd/yyyy

asp.net - 在 ckEditor 中单击保存会触发什么事件?

javascript - 无法生成适配器应用程序 - ember.js

ember.js - 在 Ember-Data 中创建临时非持久对象

javascript - 检查是否可以使用 JavaScript 访问远程网站

javascript - 在渲染路线之前在 Ember 中请求

ember.js - Ember-Data 递归 hasMany 关联

Ember.js 应用离线行为

javascript - 问题迭代模板中的 Ember.js 对象