如何将变量传递给所有函数都可以访问的外部javascript文件

时间:2016-06-14 19:01:55

标签: javascript jquery kendo-ui kendo-asp.net-mvc external-js

我有一个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未定义。什么是不正确的?

感谢。

1 个答案:

答案 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中的隐藏字段,然后从外部函数访问该字段。