Events プロパティが外部 JavaScript ファイルの関数 (Grid_OnRowSelect) にフックされている剣道グリッドがあります。外部 JavaScript ファイルには他の関数があります (on ボタン クリック* $("#btnS").on('click', function () {....* ) など)。 Grid_OnRowSelect 関数と他の関数変数の共通セットを使用する すべての関数からアクセスできるビュー (cshtml) から外部の 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 は未定義になります。正しくないのはどれですか?
ありがとう。