2016-05-05 4 views
1

私はマリオネットと非常に簡単なセットアップをしています。私は仕事をしようとしています。マリオネットはどのようにレンダリングビューをDOMにアタッチするのですか

私はコレクションを持つビューを持っている:

var MyItemsView = Marionette.View.extend({ 
    template: "#some-template" 
}); 

var view = new MyItemsView({ 
    collection: new Backbone.Collection([1,2,3,4,5]) 
}); 

テンプレートは直接私のHTMLに

<script id="some-template" type="text/html"> 
     <ul> 
      <% _.each(items, function(item){ %> 
      <li> <%= item %> </li> 
      <% }); %> 
     </ul> 
</script> 

を埋め込まれている私は何も出力を取得していません。

view.render()を使用しようとすると、出力も表示されません。 ログに記録するときconsole.log(view.render().el)空きがあります<div>これはどうして起こりうるのですか?ビューは提供されたテンプレートを使用するべきではありませんか?

別のアップデート。これは、ItemViewまたはLayoutViewでレンダリングされますが、View ... wtfはここでは実行されません。

この例は、MarionetteのWebサイトから直接取得したものです。私がここで間違っていることはありますか?

答えて

1

のようにDOMに追加する必要があります

か、他、あなたがelオプションを使用して追加されるために、このビューのコンテンツを配置したい場所にそれを伝える必要がありますを使用して?

注:Marionette.Viewあなたは3.0.0(現在ベータ版)の前に何を使用している場合は、ItemViewなくマリオネットのドキュメントからView(v2.4.5)から延びるべきですクラスは直接使用するためのものではありません。 これは、他のビュークラスが から拡張され、すべてのビュー で共有されるビヘイビアの共通の場所を提供するための基本ビューとして存在します。

この動作はv3.0.0で変更され、ItemViewは削除されたように見えます。

+0

これは正解です。私は本当に間違った方法でこのクラスを使用しようとしていました。ありがとうございます。 –

0

見た目からは、メモリにあるビューが作成されます。

あなたは手動であるマリオネットのバージョンは何

$('body').append(view.el) 
+0

私の質問が更新されました。これはビューでは機能していないようですが、他のタイプのビューでも機能します。 –

+0

@DanielTateは実際のスクリプトの後に追加されたテンプレートスクリプトですか?あなたは[mcve]を作成できますか? –

関連する問題