0

次のようなツリーのようなバックボーン モデルがあります。

var Leaf = Backbone.Model.extend({
    urlRoot: "tests.json",
    initialize: function() {
        if (Array.isArray(this.get('children'))) {
            var childTree = new Tree();
            childTree.on("add",this.addChild);
            childTree.add(this.get('children'));
            this.set({children: childTree});
        }
    },


    addChild : function(child){
        console.log(this);console.log(child);
    },

});


var Tree = Backbone.Collection.extend({
    model: Leaf,
    url: "tests.json",
});

addChildchildTree初期化メソッドに追加された各要素に対して呼び出されます。しかし、addChildメソッド内では、モデルではなくコレクションthisを参照していchildTreeます...私は比較的javascriptの経験がなく、まったく意味がありません...これは正しい動作ですか、どうすればリスナーをバインドできますか内部のモデルにaddChild?

JSON は次のようなものです。

[{
    "name":"root",
    "children":[
        {
            "name":"inner",
            "children":[{
                "name":"innerinner",
                "attr":{"class":""},
                "checked":true,
                "locked":true,
                "children":[]
            }]
     }]
}]

前もって感謝します!

4

1 に答える 1

3

試す

childTree.on("add", _.bind(this.addChild, this));
于 2013-03-02T22:55:04.790 に答える