我尝试用很多不同的方式编写这段代码但它返回了这个错误:
未捕获的TypeError:无法读取未定义的属性“createRecord”
App.StackFormComponent = Ember.Component.extend({
init: function() {
this.set('stack', Ember.Object.create());
},
actions: {
submit: function() {
var newStack = this.store.createRecord('stack', {
title: this.get('stack.title'),
location: this.get('stack.location'),
date: new Date().getTime(),
details: this.get('stack.details'),
});
newStack.save();
},
cancel: function() {
this.sendAction('cancel');
}
}
});
App.Stack = DS.Model.extend({
title: DS.attr('string'),
location: DS.attr('string'),
date: DS.attr('number'),
details: DS.attr('string')
});
不幸的是,类似问题的答案没有帮助。有什么想法吗?
答案 0 :(得分:4)
Ember将store
注入路由和控制器,但不注入组件,因此这是您的问题。
您可以继续将store
注入初始化程序内的组件中,如下所示:
Ember.onLoad('Ember.Application', function(Application) {
Application.initializer({
name: "injectStoreIntoMyComponent",
after: "store",
initialize: function(container, application) {
application.inject('component:good-test-comp', 'store', 'store:main');
}
});
});
工作示例here
答案 1 :(得分:0)
将商店注入组件并不是一个好的设计。您可以将其作为参数{{my-component store=store}}
传递。
答案 2 :(得分:0)
在组件中注入商店并不是一个好的设计。相反,我们需要将数据发送到组件并发送操作以与数据进行通信。如果您仍想将其作为特例包含在内,那么您可以简单地说,
store: Ember.inject.service()