各タスク項目にコメントを付けて複数のタスク リストを保持できるアプリを構築しています。問題なくタスクを作成できますが、コメントを作成/削除しようとすると、「Uncaught TypeError: Cannot call method 'createRecord' of undefined」というメッセージが表示されます。コントローラーの依存関係またはモデル関係のある何かに。誰かが私を正しい方向に向けることができますか?
これが私のルートです
App.Router.map(function() {
this.resource('lists');
this.resource('list' , {path: ':list_id'});
});
App.ApplicationRoute = Ember.Route.extend({
setupController : function(){
this.controllerFor('lists').set('model', this.store.find('list'));
this.controllerFor('task').set('model' , this.store.find('task'));
this.controllerFor('comment').set('model' , this.store.find('comment');
}
});
App.ListsRoute = Ember.Route.extend({
model : function(){
return this.store.find('list');
}
});
App.ListRoute = Ember.Route.extend({
model : function(params){
return this.store.find('list', params.list_id);
}
});
これが私のモデル階層です
App.List = DS.Model.extend({
tasks: DS.hasMany('task', {async : true})
});
App.Task = DS.Model.extend({
description: DS.attr('string'),
list: DS.belongsTo('list'),
comments : DS.hasMany('comment')
});
App.Comment = DS.Model.extend({
body : DS.attr('string'),
task : DS.belongsTo('task')
});
そして、これが私のコントローラーです (注: コントローラーの項目は、個々のタスクを編集できるようにするためだけにあるので、必要に応じて無視してかまいません)
App.ListController = Ember.ObjectController.extend({
});
App.TaskController = Ember.ArrayController.extend({
needs : ['list'],
actions : {
addTask : function(){
var foo = this.store.createRecord('task', {
description : '',
list : this.get('content.id'),
comments : []
});
foo.save();
console.log('Task Created!');
}
}
});
App.ItemController = Ember.ObjectController.extend({
//code to edit or remove individual tasks
});
App.CommentController = Ember.ObjectController.extend({
needs : ['task'],
actions : {
save: function(newCommentBody) {
var foo = this.store.createRecord('comment',{
body: newCommentBody,
task : this.get('content.id')
});
task.save();
console.log('Comment Created!');
}
}
});