我正在构建一个Ember应用程序,我通过以下ajax调用从路径中的API端点获取Debate对象的提要:
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
$.getJSON("http://localhost:3000/api/v2/debate_feed").then(debates => {
store.push(debates);
});
}
});
收到Debate对象后,我需要将它们保存到数据存储中,问题是在ajax调用完成后我无法访问Ember Data存储。当我尝试访问商店时,我收到以下错误:
Uncaught ReferenceError: store is not defined(…)
任何想法是什么问题?
答案 0 :(得分:3)
store
。您可以this.get('store')
获取store
个对象。您可以尝试以下代码。
import Ember from 'ember';
export default Ember.Route.extend({
beforeModel(transition) {
return Ember.$.getJSON("http://localhost:3000/api/v2/debate_feed").then(debates => {
this.get('store').push(debates);
});
},
model: function() {
return this.store.peekAll('debate');
}
});
但首选方法是,
1.定义辩论模型model guide
2.Define Adapter - JSONAPIAdapter或RESTAdapter。adapter guide
3.实现GET请求/辩论的API端点
然后您只需简单地说this.store.findAll('debate')
这将获取并将其更新为store
。
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
return this.store.findAll('debate');
}
});
答案 1 :(得分:1)
它应该是this.store.push(...)
,但你真的应该用适配器实现ajax调用!另请注意,model
将为空,因为您什么都不返回。如果您想让模型执行return this.store.push(...)
。