我有一个Kendo网格,其Events属性挂钩到外部javascript文件中的函数(Grid_OnRowSelect)。外部javascript文件中还有其他功能(例如按钮上单击 * $(“#btnS”)。on('click',function(){.... * )和其他一些功能。 Grid_OnRowSelect函数和其他函数使用常见的变量集。如何从一个可以被所有函数访问的视图(cshtml)中将变量传递给外部javascript文件。
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;
}
};
外部js文件是
<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>
}());
我如何尝试传递参数
{{1}}
但是当Grid_OnRowSelect或任何函数被执行时_args未定义。什么是不正确的?
感谢。
答案 0 :(得分: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中的隐藏字段,然后从外部函数访问该字段。