0

これには複数の質問があることを知っており、それらの回答を通じて最初の問題を解決しました。グローバル名前空間を汚染せず、このタイプのソリューションを使用することにしました。しかし今、同じフレームワークに関連する別の問題があります。私のモデルはこのように始まります。

define([
'backbone',
'backbone.relational'
], function(Backbone){

var MenuNode = function () {
    Backbone.RelationalModel.apply(this,arguments);
}

var NodeCollection = function() {
    Backbone.Collection.apply(this,arguments);
}

MenuNode = Backbone.RelationalModel.extend({
    constructor: MenuNode,

    relations:[
        {
            type: Backbone.HasMany,
            key: "children",
            relatedModel: MenuNode,
            collectionType: NodeCollection,
            reverseRelation: {
                key: "parent"
            }
        }
    ]
})

NodeCollection = Backbone.Collection.extend({
    constructor: NodeCollection,
    model: MenuNode,
    url: function() {
        return "/nodes"
    }
})

これにより、jstree であるアプリケーションに必要なモデルが作成されます。しかし、私の質問は、API との関係を作成する方法と、バックボーンを使用してノードの現在の子を取得する方法です。私はAPIを持っています:

 nodes/            returns the root nodes in a simplified version
 nodes/id          returns the full info about node, with children and parent simplified
 nodes/id/children returns the simplified version of the children of a specific node

しかし、バックボーンを介して特定のノードの現在の子を取得するにはどうすればよいでしょうか? 子をロードしたいときに電話をかけることができるようにしたいのですが、子を事前にロードしたくありません。リクエスト用にサーバーを保存しようとしています。ツリービューが大きいため、ツリー全体をロードする必要がないことを意味します。

さらに明確にするために質問をしてください。先にThx

4

2 に答える 2

0

関連モデルとして文字列リテラルを使用することで、これを達成できるはずです。

relations:[
    {
        type: Backbone.HasMany,
        key: "children",
        relatedModel: 'MenuNode',
        collectionType: NodeCollection,
        reverseRelation: {
            key: "parent"
        }
    }
]
于 2013-07-04T19:54:01.287 に答える