2012-09-19 5 views
5

ページ内の既にレンダリングされているHTMLにビューをバインドするファンシーな方法はありますか?htmlのレンダラにバックボーンビューをバインドする

例サーバーがすべてのページhtmlを読み込むと、最初にページを読み込むときにレンダリングメソッドを使用せずにそのHTMLの上にビューを読み込みます。

+0

あなたは何を求めているのですか。 JavaScriptはクライアント側であるため、JSフレームワークはサーバーに依存することなくDOM要素を変更できます(サービスを使用してAJAX関連のデータをロードしている場合を除く)。これは、単一ページアプリケーションの背後にある全体的なアイデアです。サーバーはすべてのテンプレートを含む1つのhtmlビューを送信し、JavaScriptはビューをレンダリングし、htmlを操作します。あなたが取り組んでいることをもう少し具体的に記述できますか? – PhillipKregg

答えて

10

私はあなたがやろうとしていると思うものに類似した何かをやりました。私の場合は、既存のフォームの上にバックボーンの機能を追加しました。

既存のHTML::ここではストリップダウンの例です

<div id="my-app"> 
    <form name="input" action="html_form_action.asp" method="get"> 
    Username: <input type="text" name="user" id="username" /> 
    <input type="submit" value="Submit" /> 
    </form> 
</div> 

バックボーン:

var MyFormView = Backbone.View.extend({ 
    events: { 
    "submit form": "formHandler" 
    }, 
    formHandler: function(evt) { 
    evt.preventDefault(); 
    var nameVal = $('#username').val(); 
    this.$el.append('<p>hello: ' + nameVal + '</p>'); 
    } 
}); 

$().ready(function(){ 
    var myForm = new MyFormView({el: "#my-app"}); 
}); 

キーはあなたのビューを作成する "エル" プロパティとして、既存のHTMLを渡しています。

0

私が現在取り組んでいることははっきりしませんが、モデルやコレクションやルーターは心配する必要がなく、バックボーンビューのみを利用するJSFiddleを作成しました。

これを使用して再生し、メインページビューがそのコンテナにどのように読み込まれているかを確認できます。ここで

はフィドルです:http://jsfiddle.net/phillipkregg/tVmTM/71/

1

ファンシーメソッドの意味がわかりませんが、あなたの意見ではelhtmlをレンダリングする必要はありません。ページ上の既存の要素にビューを簡単にアタッチするには、それをelに割り当てるだけです。後でビューのelを割り当てたい場合(「スイッチ」とするとel)、setElementメソッドを使用します。 setElementを使用すると、キャッシュされた$elが作成され、バインドされたすべてのイベントが移動されます。

関連する問題