Backbone.js 在主干关系中,如何添加:*fetch()上的事件

Backbone.js 在主干关系中,如何添加:*fetch()上的事件,backbone.js,backbone-relational,Backbone.js,Backbone Relational,当我使用.fetch()加载模型时,它会为添加的每个问题触发一个add:survey\u问题(如果通过.add()将某个内容加载到我的survey\u questions集合中,则会发生同样的情况)更糟糕的是,添加:调查问题不尊重我的调查问题集合中的比较标准 我想用一种方法来平息发生的add:survey_问题 侦听调查模型(SurveyBuilder)和问题模型(嵌入在SurveyQuestion模型中)上的所有事件时的Console.log输出 以下是我的模型: m.Question = m

当我使用
.fetch()
加载模型时,它会为添加的每个问题触发一个add:survey\u问题(如果通过.add()将某个内容加载到我的
survey\u questions
集合中,则会发生同样的情况)更糟糕的是,添加:调查问题不尊重我的调查问题集合中的比较标准

我想用一种方法来平息发生的add:survey_问题

侦听调查模型(SurveyBuilder)和问题模型(嵌入在SurveyQuestion模型中)上的所有事件时的Console.log输出

以下是我的模型:

m.Question = m.BaseModel.extend({
    urlRoot: '/api/questions',

    initialize: function(){
        if(this['type']) {
            this.set('type', this['type']);
        } else if(this.get('type')) {
            this.type = this.get('type');
        }

        m.BaseModel.prototype.initialize.apply(this, arguments);
    },

    defaults: {
        question_text: '',
        question_number: 1,
        comment_field: true
    },
    calculateProperties: function(){
        return {
            'question_id': this.getID()
        };
    },
    subModelTypes: {
        'Numeric': 'APP.Models.NumericQuestion',
        'MultipleChoice': 'APP.Models.MultipleChoiceQuestion',
        'Checkboxes': 'APP.Models.CheckboxesQuestion',
        'FreeText': 'APP.Models.FreeTextQuestion',
        'TimePeriod': 'APP.Models.TimePeriodQuestions',
        'Sorting': 'APP.Models.SortingQuestion',
        'Grading': 'APP.Models.GradingQuestion',
        'Slider': 'APP.Models.SliderQuestion',
        'AgreeDisagree': 'APP.Models.AgreeDisagreeQuestion',
        'YesNo': 'APP.Models.YesNoQuestion'
    }
});

m.SurveyQuestion = m.BaseModel.extend({
    defaults: {
        'question_number': 1
    },
    relations: [{
        type: Backbone.HasOne,
        key: 'question',
        relatedModel: 'APP.Models.Question',
        includeInJSON: '_id',
        reverseRelation: {
            type: Backbone.HasMany,
            key: 'survey_question',
            includeInJSON: false
        }
    }]
});

m.Survey = m.BaseModel.extend({
    urlRoot: '/api/surveys',
    defaults: {
        start_date: moment().format('YYYY-MM-DD'),
        end_date: moment().add('weeks', 3).format('YYYY-MM-DD'),
        title: moment().format('MMMM') + ' Economist Survey'
    },
    relations: [{
        type: Backbone.HasMany,
        key: 'survey_questions',
        relatedModel: 'APP.Models.SurveyQuestion',
        collectionType: 'APP.Collections.SurveyQuestions',
        includeInJSON: true,
        reverseRelation: {
            key: 'survey',
            includeInJSON: true
        }
    }]
});
m.Question = m.BaseModel.extend({
    urlRoot: '/api/questions',

    initialize: function(){
        if(this['type']) {
            this.set('type', this['type']);
        } else if(this.get('type')) {
            this.type = this.get('type');
        }

        m.BaseModel.prototype.initialize.apply(this, arguments);
    },

    defaults: {
        question_text: '',
        question_number: 1,
        comment_field: true
    },
    calculateProperties: function(){
        return {
            'question_id': this.getID()
        };
    },
    subModelTypes: {
        'Numeric': 'APP.Models.NumericQuestion',
        'MultipleChoice': 'APP.Models.MultipleChoiceQuestion',
        'Checkboxes': 'APP.Models.CheckboxesQuestion',
        'FreeText': 'APP.Models.FreeTextQuestion',
        'TimePeriod': 'APP.Models.TimePeriodQuestions',
        'Sorting': 'APP.Models.SortingQuestion',
        'Grading': 'APP.Models.GradingQuestion',
        'Slider': 'APP.Models.SliderQuestion',
        'AgreeDisagree': 'APP.Models.AgreeDisagreeQuestion',
        'YesNo': 'APP.Models.YesNoQuestion'
    }
});

m.SurveyQuestion = m.BaseModel.extend({
    defaults: {
        'question_number': 1
    },
    relations: [{
        type: Backbone.HasOne,
        key: 'question',
        relatedModel: 'APP.Models.Question',
        includeInJSON: '_id',
        reverseRelation: {
            type: Backbone.HasMany,
            key: 'survey_question',
            includeInJSON: false
        }
    }]
});

m.Survey = m.BaseModel.extend({
    urlRoot: '/api/surveys',
    defaults: {
        start_date: moment().format('YYYY-MM-DD'),
        end_date: moment().add('weeks', 3).format('YYYY-MM-DD'),
        title: moment().format('MMMM') + ' Economist Survey'
    },
    relations: [{
        type: Backbone.HasMany,
        key: 'survey_questions',
        relatedModel: 'APP.Models.SurveyQuestion',
        collectionType: 'APP.Collections.SurveyQuestions',
        includeInJSON: true,
        reverseRelation: {
            key: 'survey',
            includeInJSON: true
        }
    }]
});