2012-01-27 8 views
0

私は2つのバックボーンビューを持っています。 1つはメインビューで、もう1つはメインビュー内で使用されるビューです。私は私の様々な意見のために個々のモジュールを作っています。私はロードされ、ルータから正常に実行されているメインビューを持っている。Backbone.js + require.js application:require.jsで読み込まれたモジュールビューを返さない

MAIN VIEW:

define([ 
    'jquery', 
    'backbone', 
    'metros/docsMetro' 
], 
function($, Backbone, docsMetro) { 
    //Main Dashboard View 
    var Dashboard = Backbone.View.extend({ 
      el: $('#mainContent'), 
      events: { 

      }, 


      initialize: function() { 
       console.log('test'); 
       //Validate User Here most likely. Each of the main view's for each app should probably call the same validation function 


      }, 

      render: function(){ 
       console.log('testing render'); 

      } 

     }); 


    // Return the Main Dashboard View 
    return new Dashboard; 

トップであっ必要がロードされている「地下鉄/ docsMetro」ファイルここでは私の2つのビューがあります。私はこのビューが読み込まれていることを知ることができ、initを介して実行されています。

define([ 
    'jquery', 
    'backbone' 
], 
function($, Backbone) { 
    //Docs Metro View 
    var docsMetro = Backbone.View.extend({ 
      el: $('.docs'), 
      events: {}, 

      initialize: function() { 
       console.log('docs Metro'); 

      }, 

      render: function(){ 
       console.log('redering docs'); 

      } 

     }); 

    // Return the View 
    return new docsMetro; 
}); 

私の問題は、メインビューで返さdocsMetroビューが戻って来ているヌルでなければなりません「docsMetro」変数です。

私は何が欠けていますか、すべて正しく設定されているようですか?

+0

私はあなたの例を作り直しました。ダッシュボードビューで2つの問題が発生しています。第1回はあなたの 'metros/docsMetro 'を正しく参照しています。 2番目のダッシュボードビューでは、最後に '})'がありませんが、これはたぶん入力ミスです。私は、ビューの最後に ')'が欠けていたときに問題があったことに気づいた。 –

+1

正確なコードはhttps://gist.github.com/1691229に追加しました。私のmain.jsでは、パスをマップするためにrequire.configを使用しました。 –

答えて

0

モジュールへのパスを相対パスに設定できますか?

の代わり'./metros/docsMetro'を行う'metros/docsMetro'を行う(地下鉄フォルダを仮定すると、あなたは地下鉄/ docsMetroを必要とするから、モジュールファイルと同じレベルにある)

そして、あなたのコードのために他のいくつかのヒントと修正。

モジュールはインスタンスではなくコンストラクタを返す必要があり、インスタンスを必要とするビューのイニシャライザでインスタンス化する必要があります。

jQueryとBackboneは、名前空間のグローバル登録をサポートしなくなるため、毎回依存関係配列に渡す必要はありません。ルータとメインビューをロードして残りのアプリケーションをロードする前に、ブーストラップに一度だけ必要なのであれば十分です。

関連する問題