0

私は最初のBackbone.jsアプリに取り組んでいますが、デザインに問題がある可能性があると懸念している奇妙な動作に遭遇しました。私のデータは次のようになります。

Syllabus
    Dance
        Figure
        Figure
        Figure
    Dance
        Figure
        Figure
    etc.

私はそれを表すためにこのモデルを作成しました:

$.syllabus.Syllabus = Backbone.RelationalModel.extend({
    urlRoot: '/api/syllabus',
    idAttribute: 'id',
    relations: [{
        type: Backbone.HasMany,
        key: 'danceAssignments',
        relatedModel: '$.syllabus.DanceAssignment',
        collectionType: '$.syllabus.DanceAssignmentCollection',
        reverseRelation: {
            key: 'syllabus',
            includeInJSON: 'id'
        }
    }]
});

$.syllabus.DanceAssignment = Backbone.RelationalModel.extend({
    urlRoot: '/api/danceassignments',
    idAttribute: 'id',
    relations: [{
        type: Backbone.HasMany,
        key: 'figureAssignments',
        relatedModel: '$.syllabus.FigureAssignment',
        collectionType: '$.syllabus.FigureAssignmentCollection',
        reverseRelation: {
            key: 'danceAssignment',
            includeInJSON: 'id'
        }
    }],
});

$.syllabus.DanceAssignmentCollection = Backbone.Collection.extend({
    model: $.syllabus.DanceAssignment,
    urlRoot: '/api/danceassignments',

    comparator: function(danceAssignment) {
        return danceAssignment.get('index');
    },
});

$.syllabus.FigureAssignment = Backbone.RelationalModel.extend({
    urlRoot: '/api/figureassignments',
    idAttribute: 'id'
});

$.syllabus.FigureAssignmentCollection = Backbone.Collection.extend({
    model: $.syllabus.FigureAssignment,
    url: '/api/figureassignments',

    comparator: function(figureAssignment) {
        return figureAssignment.get('index');
    },
});

FigureAssignmentCollectionは、そのメンバーの1つのインデックスプロパティを変更すると自動的に並べ替えられますが、DanceAssignmentCollectionは変更されません。また、明示的に指示した場合も並べ替えられません。コンパレータが呼び出されますが、並べ替え後にコレクションの内容を出力すると、順序が間違っており、インターフェイスによって順序が狂ってしまいます。

何かご意見は?

4

1 に答える 1

0

私は解決策を見つけました。私の見解は、SyllabusViewの一部としてdanceAssignmentsコレクションをレンダリングしていました。コレクションをデータとしてDanceListViewを追加し、SyllabusViewの代わりにDanceViewsをレンダリングさせると、ダンスが適切に並べ替えられ始め、他の非常に奇妙な動作も解決されました。

于 2013-03-04T18:56:24.833 に答える