Javascript Ember JS:Uncaught TypeError:无法读取属性';createRecord';空的

Javascript Ember JS:Uncaught TypeError:无法读取属性';createRecord';空的,javascript,ember.js,ember-data,ember-cli,Javascript,Ember.js,Ember Data,Ember Cli,我已经开始使用ember cli开发一个ember JS应用程序。 现在的想法是通过保持点击的坐标来创建svg元素(圆) 我使用一个视图捕捉鼠标点击,然后将其传递给控制器以创建带有坐标的圆。 我正在使用fixture适配器来存储数据 我在代码中手动放置的元素在显示时可以正常工作。 当我想用我的控制器存储一个新节点时,出现了以下错误: Uncaught TypeError: Cannot read property 'createRecord' of null 以下是控制器文件svg.js: e

我已经开始使用ember cli开发一个ember JS应用程序。 现在的想法是通过保持点击的坐标来创建svg元素(圆)

我使用一个视图捕捉鼠标点击,然后将其传递给控制器以创建带有坐标的圆。 我正在使用fixture适配器来存储数据

我在代码中手动放置的元素在显示时可以正常工作。 当我想用我的控制器存储一个新节点时,出现了以下错误:

Uncaught TypeError: Cannot read property 'createRecord' of null
以下是控制器文件svg.js:

export default Ember.ObjectController.extend({
行动:{
createNode:函数(posX、posY){
var element=this.store.createRecord('element',{//这里是我得到错误的地方
文本:“元素”,
x:posX,
y:波西,
图表:1
});
元素save();
}
}
});
这是我的模板文件:

{{{#查看svg}
{{{#模型中的每个项}}//对于每个图
{{{#each item.elements}}//
{{/每个}}
{{/每个}}
{{/view}
相关路线:

导出默认Ember.Route.extend({
模型:函数(){
返回此.store.find('graph');
}
});
查看文件:

导出默认Ember.View.extend({
标记名:“svg”,
属性索引:[“宽度”、“高度”],
宽度:“500”,
高度:“500”,
init:function(){
这个;
set(“controller”,svg.create());
},
单击:功能(evt){
var svg=Ember.$(“svg:first”);
var posX=evt.pageX-svg.position().left;
var posY=evt.pageY-svg.position().top;
this.get('controller').send('createNode',posX,posY);
}
});
也许我做错了什么,但我不知道为什么
这个.store
会为空

有什么想法吗


提前谢谢

哎呀,我没看见你在那里干什么。控制器需要由容器初始化,以便使用依赖项注入。依赖注入将存储注入控制器和路由

由于控制器在2.0中被弃用,我只想说将您的操作从控制器移动到包含该视图的路由/控制器。如果不想这样做,还必须将存储传递到视图中,您可以在创建存储时在控制器上手动定义它

在视图上定义它 注入到视图中,创建一个注入器并添加该注入器
存储在其他地方也可以工作,比如当你得到图形时,对吗?是的,这是正确的,得到图形没有问题。我尝试使用另一个控制器来创建一个具有固定坐标的元素记录,它也工作得很好。很明显,我不明白为什么管理员不能进入商店。谢谢你的回答!但实际上,如果我在视图中移动我的操作,我会得到相同的错误,其中属性createrecord无法读取。我真的不明白,因为就像我说的,我在模板上使用了另一个控制器,它可以在商店中创建记录。。如何在视图或控制器中手动定义存储?我刚开始研究余烬。。
{{#view svg store=store}}
App.inject('view', 'store', 'store:main');