7

RequireJS を使用して Backbone にネストされたカテゴリ構造を設定しています。

この構造では、カテゴリ コレクションにカテゴリ モデルが含まれており、1 つのカテゴリ モデルにカテゴリ コレクションを含めることができます。

残念ながら、これは RequireJS で恐ろしい循環依存の問題を引き起こしているようです。RequireJS ( http://requirejs.org/docs/api.html#circular ) のドキュメントを読みましたが、「a」と「b」の説明がわかりにくいです。

問題を引き起こしている私のコードは次のとおりです。

define([

    "jquery",
    "underscore",
    "backbone",
    "collections/categories"

    ], function( $, _, Backbone, CategoriesCollection ) {

    var Category = Backbone.Model.extend({

        defaults: {
            title: "Untitled"
        },

        parse: function(data) {
            this.children = new CategoriesCollection( data.children, {parse: true} );
            return _.omit( data, "children" );
        }

    });

    return Category;

});

...

define([

    "jquery",
    "underscore",
    "backbone",
    "models/category"

    ], function( $, _, Backbone, CategoryModel ) {

    var Categories = Backbone.Collection.extend({
        model: CategoryModel
    });

    return Categories;

});

以前にこれを経験したことがある人が、私を正しい方向に導くのに役立つかどうか疑問に思っています.

(事前に)ご協力いただきありがとうございます。

4

2 に答える 2

11

require最初に渡されるコレクションは未定義である可能性があるため、モデルで必要なときにコレクションを再度使用する必要があります。

define([

    "jquery",
    "underscore",
    "backbone",
    "collections/categories"

    ], function( $, _, Backbone, CategoriesCollection ) {

    var Category = Backbone.Model.extend({

        defaults: {
            title: "Untitled"
        },

        parse: function(data) { 
            if(!CategoriesCollection){
              CategoriesCollection = require("collections/categories");
            }

            this.children = new CategoriesCollection( data.children, {parse: true} );
            return _.omit( data, "children" );
        }

    });

    return Category;

});

この例では、それらもインポートされますrequireが、インポートなしでも機能するはずです。

于 2013-01-14T20:23:47.850 に答える
0

これには、 Backbone Relationalなどのプラグインの使用を検討する必要があります。

于 2013-01-14T20:23:22.797 に答える