2012-05-02 13 views
0

は、私はいくつかのビュー(画面、ページの内容を)持っている単一ページのアプリケーションを構築しようとしているシングルページアプリケーションで新しいスクリプトを読み込む方法は?

私のアプリのUIは、上系永久メニューバーとAjaxを介したビューを取得し、「表示領域」を持っていますメニュー選択。これはシンプルなHTMLコンテンツにはうまく機能し、ビューが表示されているにもかかわらず、バックグラウンドでメニュースクリプトを実行し続けます。

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

私は、ページフラグメントにスクリプトタグを埋め込み、そこにコードを書き込むことができますが、私は本当にこれを行うより頑強な方法を探しています。オブジェクトのインスタンスが作成されるようにしてください。ビューがロードされ、ビューが変更されたときに破棄されます。

+0

なぜスクリプトを破棄しますか?あなたがアクセスできないようにした方が良いでしょう。そうすれば、それが再び必要になった場合、それはすでにそこにある。 – Joseph

+0

それは本当に大きな要件ではありませんでした。私は他の言語で慣れています。ここでの主な問題は、必要なときにスクリプトを読み込むことです。 – wannabeartist

答えて

1

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

+0

ありがとう!私はそれをチェックしなければならない... – wannabeartist

1

<script>タグを他のタグと同じ方法で追加するには、javascriptを使用できます。

最も難しい部分は、どこに配置するのかを知ることですが、マークアップを管理している場合、これはあまり大きな障壁にはなりません。これらの線に沿って

何か:あなたはそのスクリプトをロードしたときに自動的に発生するものが必要な場合は

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

、あなたが仕事をするself executing anonymous functionを使用することができるはずです。

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

あなたはそれが次のようになります関数に何を渡す必要がある場合:あなたは本当にスクリプトを破棄する必要がある場合は

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

、あなたはノードを削除することができますが、それは良いかもしれませんユーザーがビューを再アクティブ化する場合に備えて、AJAX呼び出しと関連するHTTP要求を行う必要がないため、ページをより高速に読み込むことができます。