Ember.js 类型错误:';未定义';不是对象(正在计算';store.createRecord';)

Ember.js 类型错误:';未定义';不是对象(正在计算';store.createRecord';),ember.js,ember-data,Ember.js,Ember Data,我在组件(Ember.component)中有一个“新”操作,其中包含以下代码: var store = this.get('store'); store.createRecord('child'); 但我得到了以下错误: TypeError: 'undefined' is not an object (evaluating 'store.createRecord') 我能够继续执行此操作的唯一方法是使用以下命令查找父对象(始终在组件中设置): store = this.get('paren

我在组件(Ember.component)中有一个“新”操作,其中包含以下代码:

var store = this.get('store');
store.createRecord('child');
但我得到了以下错误:

TypeError: 'undefined' is not an object (evaluating 'store.createRecord')
我能够继续执行此操作的唯一方法是使用以下命令查找父对象(始终在组件中设置):

store = this.get('parent.store');

然后从上面继续createRecord调用。这是“正常”的继续方式吗?

存储在组件内部不存在,因此您需要将其传递到组件中,或者必须从某个父控制器(或传入控制器)获取它

通过余烬数据转换文件()

通常,直接在组件中查找模型是一种反模式,您应该更愿意在包含该组件的模板中传入所需的任何模型


糟糕的是,您正在向组件中的余烬数据添加一个依赖项,该依赖项应该与外部世界无关。

您能再显示一些代码吗?你在哪里尝试这是非常重要的!好的,多基。我就是这么想的。谢谢所以,我当时的做法是“正确”的:)酷。糟糕的是,你在组件中添加了一个对余烬数据的依赖,这应该是与外部世界无关的。是的,我正在重新设计一些东西,这样它们就不会那么依赖于模型层了。有点奇怪,但到现在为止,我已经读了50遍了。我不敢相信我竟然不记得了很酷,所以我现在使用这个:New,然后在调用组件的模板中,我通过指定actionTarget=this来传递actionTarget。然后,我为调用组件的模板指定控制器上的新操作。耶:)再次感谢。这就是我们通常的做法,我们传递动作,并允许外部环境来处理。