2011-09-15 6 views
0

MVCアプリケーションに取り組んでいます。外部javascriptファイルを呼び出すmasterpageと、javascriptファイルを呼び出す子ページがあります。私は子供のページまたはmasterpageによってそれがもう一度そのJavascriptファイルを加えるべきではないはずであることを追加したいと思う。なぜ、あなたは自分のマスターページでは、これらのファイルを取得しないだろう、私が行っているが、 が動作していない、これはここでjavascriptファイルを一度だけ追加する方法

$(document).ready(function() { 
     var fileref1 = document.createElement('script') 
     fileref1.type = "text/javascript"; 
     fileref1.src = "~/Scripts/testZoomPlugin.js"; 
     fileref1.Id = "testZoomJS"; 
     if (typeof fileref1 == "undefined") { 
      $.getScript('~/Scripts/testZoomPlugin.js'); 
     } 
     fileref1.src = "~/Scripts/jquery.ui.widget.min.js"; 
     fileref1.Id = "testWidget"; 

     if (typeof fileref1 == "undefined") { 
      $.getScript('~/Scripts/jquery.ui.widget.min.js'); 
     } 
     fileref1.src = "~/Scripts/jquery.ui.slider.min.js"; 
     fileref1.Id = "testSlider"; 
     if (typeof fileref1 == "undefined"){ 
      $.getScript('~/Scripts/jquery.ui.slider.min.js'); 
     } 
     if(typeof fileref1=="undefined"){ 
      $.getScript('~/Scripts/jquery.ui.slider.min.js'); 
    }); 

答えて

2

だけRequireJSを使用し、それはあなたが必要なものを行い、ストレートな構文を持って、あなたのケースでは、このようなものになります。

<script src="~/Scripts/require.js"></script> 
<script> 
var modules = [], prefix = "~/Scripts/"; 
modules.push(prefix + "testZoomPlugin.js"); 
modules.push(prefix + "jquery.ui.widget.min.js"); 
    require(modules, function(someModule) { 
     //This function will be called when all the dependencies 
     //listed above are loaded. Note that this function could 
     //be called before the page is loaded. 
     //This callback is optional. 
    }); 
</script> 
0

コードを入力して私を助けてください?彼らはあなたの子供のページにアクセスできます。

ファイルがキャッシュに存在するため、子ページにもう一度ダウンロードされていない場合は、ファイルがダウンロードされていれば、このすべてのチェックを行う際に多くの価値があるかどうかはわかりません。

ここに何か不足していますか?

+0

問題はダウンロードされていません。また、新しいスクリプトタグを追加し、モジュールを2回実行します。大規模なアプリケーションを作成している場合は、モジュールも重要です(手作業による依存関係の管理はPITAになる可能性があります) – hugomg

+0

この状況のマスターページでは、スクリプトの要件を同じ方法で処理できますが、 – dougajmcdonald

+0

必ずしもそうではありません。私が使用するツールキットであるDojoでは、迅速な開発のための動的スクリプト・タグを使用できます。自動ツールを使用して、後でそれらをすべて1つのファイルにまとめてプロダクション用にすることができます。本当にきちんとしています... – hugomg

0

あなたはこれを後ろ向きにしていると思います。このような状況では、通常、子ページに、javascriptファイルをロードするかどうかを確認するために設定されている変数があるかどうかを確認する必要があります。たとえば、子ページの準備関数を次のように表示させることができます。

$(function() { 
    if(typeof $.fn.slider == 'undefined') 
    $('body').append('<script type="text/javascript" src="~/Scripts/jquery.ui.slider.min.js"></script>'); 
}); 

などです。

+0

$ .fn.sliderどのように動作するか – user838804

0

あなたのモジュールロード関数は、それらが2回呼び出されるのを防ぐために、すべてのモジュール名をキャッシュする必要があります。あなたの現在の関数がそれをしていない場合は、それを行うラッパーを作ります。そのような

var modules_loaded = {}; 
function caching_get_script(name){ 
    if(modules_loaded[name]) return; 
    modules_loaded[name] = true; 
    $.getScript(name) 
} 

か何か...

+0

私は例を与えて – user838804

+0

私はちょうどあなたに例を与えました<_ < – hugomg

関連する問題