2011-07-14 6 views
0

私は、次の親オブジェクトがいる疑います。私はコンテキストオブジェクトを定義しましたが、何とかそれを見ません。誰かが私を助けてくれますか? ありがとうBACKBONE.JSは

答えて

5

JavaScriptインタープリタの目を見てみましょう。声明はContext = { ... }です。その文を実行するには、最初に{ ... }を構築してContextに割り当てる必要があります。 { ... }を構築するには、new Context.ContextListを評価する必要があります。残念ながら、まだ{ ... }部分を構築中で、まだContextに何も割り当てていません。したがって、Context.ContextListの新しいインスタンスを作成しようとすると、Contextは未定義です。 Context.ContextListを作成するときにContext.ContextModelにアクセスしようとしても同じ問題が発生しています。解決

Context = { 
    ContextModel: Backbone.Model.extend({ 
     //model Code 
    }), 
    ContextView: Backbone.View.extend({ 
     // view Code 
    }) 
} 
Context.ContextList=Backbone.Collection.extend({ 
    model : Context.ContextModel 
    // collection Code 
}); 
Context.Contexts=new Context.ContextList(); 
2
var Context = {}; 
Context.ContextModel = Backbone.Model.extend({ 
     //model Code 
}); 
Context.ContextList = Backbone.Collection.extend({ 
    model : Context.ContextModel 
    // collection Code 
}); 
Context.Contexts = new Context.ContextList; 
Context.ContextView = Backbone.View.extend({ 
    // view Code 
}); 

問題:これを試してみてください。

問題は、オブジェクトリテラルの割り当てでロジックを実行していることです。 Context変数は、割り当てが完了した後にのみ存在し、オブジェクトリテラルが構築された後で終了します。

これを避けるには、オブジェクトリテラルで論理的な実行を行わないでください。値とメソッドの静的なコレクションである必要があります。

+0

おかげで、このようにそれを書い好みます。それはとても役に立ちました – felix

0

私は

var ContextModel = Backbone.Model.extend({ 
     //model Code 
    }) 
var ContextList = ContextModel({ 
     model : contextModel 
     // collection Code 
    }) 
var Context = { 
    ContextModel: ContextModel, 
    ContextList: ContextList, 
    Contexts: new ContextList, 
    ContextView: Backbone.View.extend({ 
     // view Code 
    }) 
}