2016-04-15 9 views
0

ページが読み込まれるときに3つのビューを読み込む必要があります。複数のビューを読み込むための正しいパターンは何ですか?

現在、私はこのようにそれを行う:

/** 
* BVComposite 
*/ 

    var BVComposite = Backbone.View.extend({ 
     Name: 'BVComposite', 
     render: function (token) { 
      this.BVFave = new BVFave({ el: $A.el('#mm'), 
       collection: new BCFave([], {data: {h_token: token, model: "FavoriteReader"}}) 
      }); 
      this.BVFeed = new BVFeed({el: $A.el('#at_view'), 
       collection: new BCFeed([], {data: {h_token: token, model: "FeedReader"}}) 
      }); 
      this.BVAccount = new BVAccount({ model: new BMAccount([], 
       {data: {h_token: token, model: "AccountReader"}}) 
      }); 
     } 
    }); 

それから私は

var composite_view = $A.Class.add(new BVComposite()); 
composite_view.render(token); 

(ページのロードに)このようにそれを呼び出すこれを行うには良い方法はあります。つまり、これを行うためのデザインパターンはありますか?

答えて

0

私はすべてのコードをinitialize関数に入れて、コンポジットビューで子供のrenderを呼び出しさせてもらいました。

var BVComposite = Backbone.View.extend({ 
     Name: 'BVComposite', 
     initialize:function(){ 
      this.BVFave = new BVFave({ el: $A.el('#mm'), 
       collection: new BCFave([], {data: {h_token: token, model: "FavoriteReader"}}) 
      }); 
      this.BVFeed = new BVFeed({el: $A.el('#at_view'), 
       collection: new BCFeed([], {data: {h_token: token, model: "FeedReader"}}) 
      }); 
      this.BVAccount = new BVAccount({ model: new BMAccount([], 
       {data: {h_token: token, model: "AccountReader"}}) 
      }); 
     }, 
     render: function (token) { 
      this.BVFave.render(); 
      this.BVFeed.render(); 
      this.BVAccount.render(); 
     } 
    }); 

DOM操作に関連するコードをレンダリング機能に配置するようにしてください。あなたの初期化関数では、modelまたはcollectionを割り当て、optionsパラメータを扱うなど、ビューをセットアップするために必要なロジックを配置します。これは、あなたの意図をはっきりとわかりやすくします。

+0

彼のコードの外観によって、それらのビューは自己レンダリングです。それらを別々に初期化してレンダリングする必要はありません。そのため、レンダリングしても問題ありません。 –

関連する問題