有许多关系创建记录 - 为什么未定义

HasMany Relationship to Create Record - Why is undefined?

本文关键字:为什么 未定义 记录 创建 许多 关系      更新时间:2024-06-26

我有一个与"创建记录的 HasMany 关系"有关的问题,但我已经查看并尝试了已经在堆栈溢出的答案,但它们不起作用。问题是模型未定义。我结合了QuestionsController和TopicController。

这是主题的模型:

App.Topic = DS.Model.extend({
  title: DS.attr('string'),
    questions: DS.hasMany('Question', {async: true}),
});
App.Topic.FIXTURES = [
 {
   id: 1,
   title: 'Early America',
    questions: [1,2]
 },
 {
   id: 2,
   title: 'American Revolution',
 },
 {
   id: 3,
   title: 'Modern America',
 }
];

这是主题控制器:

App.TopicsController = Ember.ArrayController.extend({ 
    actions: {
        createTopic: function () {
            var Topic = this.store.createRecord('Topic', {
                title: 'Untitled Topic'
            });
            /* Topic.get(questions.find(1)... */
            Topic.save();
            this.set('newTitle', '');
        },
    }
});

这是主题控制器:

App.TopicController = Ember.ObjectController.extend({
    isEditing: false,
    actions: {
        editTopic: function () {
            this.set('isEditing', true);
        },
        acceptChanges: function () {
            this.set('isEditing', false);
        },
        removeTopic: function () {
            var topic = this.get('model');
            topic.deleteRecord();
            topic.save();
        },
        createQuestion: function () {
            var question = this.get('store').createRecord('Question', {
                title: 'Untitled Question',
                topic: this.get('model'),
            });
            question.save();
        }
    }   
});

这是问题的模型:

App.Question = DS.Model.extend({
    title: DS.attr('string'),
    topic: DS.belongsTo('Topic', {async: true}),
});
App.Question.FIXTURES = [
 {
   id: 1,
   title: 'What continent did Colombus find?',
   topic: 1,
 },
 {
   id: 2,
   title: 'Other question',
 },
];

这是问题控制器:

App.QuestionController = Ember.ObjectController.extend({ 
   isEditing: false,
    actions: {
        editQuestion: function () {
            this.set('isEditing', true);
        },
        acceptChanges: function () {
            this.set('isEditing', false);
        },
        removeQuestion: function () {
            console.log(this);
                        console.log("hello");
                        var question = this.get('model');
                        question.deleteRecord();
                        question.save();
        }
    }
});

这是存储所有文件的地方:https://github.com/Glorious-Game-Design-ASL/MapQuizGame/tree/master/quiz_creator

呼,这花了一段时间才弄清楚。我这里有一个[最小的,没有样式或花里胡哨的]工作示例:https://gist.github.com/polerc/8137422

总结:

基本上,TopicsControllerQuestionsController的层次太多了。将TopicsController合并到QuizController中,并将QuestionsController合并到TopicController中。