2016-06-14 4 views
0

私は、イベントプロパティが外部のjavascriptファイルの関数(Grid_OnRowSelect)にフックされています。外部のjavascriptファイルには他の機能があります(ボタンクリック* $( "#btnS")など)。( 'click'、function(){.... *)他にもいくつかあります。その他の機能は、私はすべての機能によってアクセスできるビュー(CSHTML)から外部のJavaScriptファイルに変数を渡すことができますどのように。変数の共通セットを使用しています。すべての関数でアクセスできる外部のjavascriptファイルに変数を渡すにはどうすればいいですか?

@(Html.Kendo().Grid<MyModel>() 
.Name("rGrid") 
.Events(events => events.Change("Grid_OnRowSelect")) 
.Columns(columns => 
{ 
    columns.Command(command => 

....... 
....... 
....... 

外部JSファイルが

var MYFunc = MYFunc || (function() { 
var _args = {}; // private 

return { 
    init: function (Args) { 
     _args = Args; 
     // some other initialising 
    }, 
    helloWorld: function() { 
     alert('Hello World! -' + _args[0]); 
    }, 
    Grid_OnRowSelect: function (e) { 

     var data = this.dataItem(this.select()); 
     detailRequestID = data.ID; 

     var url = _args[1] + "/" + detailRequestID; 
     window.location.href = url; 
    }, 
    onError: function (e, status) { 
     //alert("A server error has occurred!"); 
     var url = _args[2]; 
     window.location.href = url; 

    } 
}; 
です

}());

にはどうすればいいの引数
<script> 
    window.onload = function(){ 
    var searchUrl = @Url.Action("Search"); 
    var updateUrl = @Url.Action("Update"); 
    var errorUrl = @Url.Action("ServerError", "Error"); 
}; 
MYFunc.init([searchUrl, updateUrl, errorUrl]);</script><script src="~/Scripts/Index.js"></script> 

しかしGrid_OnRowSelectまたは機能のいずれかが_argsを実行されます時に定義されていないに合格しようとしています。何が間違っていますか?

ありがとうございました。

答えて

0

javascriptで関数の外に変数を宣言した場合、その変数の後に読み込まれるすべてのコードJSコードで使用できるようになります。ファイルが外部ファイルであるということは重要ではなく、グローバル変数を設定した場所の後でDOMにロードするだけです。

var globalVar = "I am global"; 
function test(){ 
    var copy = globalVar;//copy now == "I am global" 
    var nonglobalVar = "I am not";//this is local to the function 
} 
var global2 = globalVar;//global2 now == "I am global" 
var anotherVar = nonglobalVar;//this line will throw an error because variable is out of scope. 

他の一般的な戦術は、HTML内の隠しフィールドに自分の価値観を書いて、あなたの外部関数からそれにアクセスすることです。

関連する問題