0

複数のビュー(画面、ページコンテンツ)を持つシングルページアプリを構築しようとしています

My AppのUIには、永続的なメニューバーと、メニューの選択に基づいてAjaxを介してビューを取得する「ビューエリア」があります。これは単純なHTMLコンテンツに最適であり、どのビューが表示されていても、メニュースクリプトをバックグラウンドで実行し続けます。

しかし、ビューに追加のスクリプトが必要な場合はどうなりますか?ビューの変更(=ボタンクリックの結果としてページフラグメントがロードされた)の結果としてスクリプトをロードして実行するにはどうすればよいですか?また、別のビューを選択したときにそのスクリプトを削除するにはどうすればよいですか?

スクリプトタグをページフラグメントに埋め込んでそこにコードを記述できることはわかっていますが、これを行うためのより堅牢な方法を本当に探しています。ビューが読み込まれたときにオブジェクトのインスタンスが作成され、その後、ビューが変更されたときに破棄されます。

4

2 に答える 2

1

yepnope.jsは優れた条件付きローダーです。スクリプトをロードする前に、特定の条件 (ビュー、状態など) を確認するために使用できます。ただし、既に読み込まれているスクリプトを削除する機能はないと思います。

于 2012-05-02T14:00:15.283 に答える
1

JavaScript を使用して<script>、他のタグと同じ方法でタグを追加できます。

最も難しい部分は、それをどこに配置するかを知ることですが、マークアップを制御できる場合、これはそれほど大きな障壁ではありません.

これらの行に沿ったもの:

function DST(url)
{
    var s = document.createElement(’script’);
    s.type=’text/javascript’;
    s.src= url;
    document.getElementsByTagName(’head’)[0].appendChild(s);
}

そのスクリプトをロードするときに何かを自動的に実行する必要がある場合は、自己実行匿名関数を使用してジョブを実行できるはずです。

(function(){alert('this happened automatically');})();

関数に何かを渡す必要がある場合は、次のようになります。

(function($){alert('this happened automatically');})(jQuery);

スクリプトを本当に破棄する必要がある場合は、ノードを削除できますが、ユーザーがビューを再アクティブ化する場合に備えて、ノードをそのままにしておく方がよい場合があります。ページの読み込みが速くなります。

于 2012-05-02T14:06:03.133 に答える