0

JavaScript をバックボーン テンプレートと緊密に統合したいと考えています。ビューは使用するテンプレートを参照するので、これが JavaScript を保存するのに最適な場所だと思いますよね? しかし、どのように?

特に、ビューがレンダリングされて準備ができた (イベントではない) ときに DOM をセットアップする JavaScript があります。私はもともとこのスクリプトをテンプレートに設定しましたが、これはアプリケーションが最初にロードされたときにのみトリガーされ、バックボーンのルーターを介してビューに戻ると、JavaScript はトリガーされませんでした。

4

1 に答える 1

2

テンプレートは JavaScript を保存するためのものではありません。ビューによってレンダリングされるダム html テンプレートであると想定されています。

ビューからテンプレートをロードするとき、このビューは、アプリケーションと対話するすべての DOM 要素とバインドする必要があります。

ビューがDOMへのバインディングのみを持っている場合は、内部イベントをトリガーできるため、良い方法です。

次に、ビュー インスタンスをリッスンして対話する「コントローラー」を作成し、メソッドをトリガーして DOM で何らかの変更を行ったり、ビューで使用されるコレクションやモデルを準備したりできます。

ただし、他の多くのライブラリを使用して、コード ロジックの読み込みを整理できます。

私はrequirejsが好きですが、 commonjsには便利なオプションがたくさんあります。

テンプレート内に JavaScript を配置することは、HTML と混合して配置するようなものです。ロジックと構造を混在させているため、アプリケーションが大きくなると保守が難しくなるため、これはお勧めできません。

コードを MVC スタイルで整理しているため、大規模なアプリケーションの拡張とテストが簡単になります。たとえば、モデル/コレクションが必要な場合、それらは MODEL/COLLECTION フォルダーにあり、CONTROLLER フォルダーにはアプリケーションの論理部分が保持され、VIEW フォルダーには DOM と対話するファイルが保持され、Django のようにテンプレートを追加しました可能な限りシンプルなテンプレートのフォルダー。

あなたの問題を説明するだけです:

スクリプトを含むテンプレートをロードすると、スクリプトが実行されます。この後、テンプレートはメモリに保存されます。つまり、内部のスクリプトが再びトリガーされることはありません。あなたはそれを修正することができますが、あなたはそれを間違って行うでしょう. Backbone でビュー render メソッドをバインドすることにより、レンダリング後にスクリプトをトリガーできます。

于 2013-01-14T05:25:19.553 に答える