Lightswitch HTML 全局JS文件传递变量

Lightswitch HTML global JS file to pass variable

我知道这在 C# 中是如何工作的,但在 javascript 中不是很清楚,所以我希望它是相似的。

使用 Javascript 我可以创建一个带有变量 (var defaultValue = "1234") 的 master.js,我可以在与项目关联的所有其他 javascript 文件中引用它?

所以对于 Lightswitch HTML,每个屏幕都有能力拥有一个 js 文件,并且在屏幕上我希望能够检索到这个 defaultValue。

  1. 这可以做到吗?
  2. 如果是,我怎样才能把这个值放到当前屏幕上?

到目前为止我已经创建了一个 main.js 文件,添加了这个功能:

function getDefaultValue(value) {

    var value = "1234";

    return value;
}

并在default.htm文件中声明js文件:

<script type="text/javascript" src="Scripts/main.js"></script>

我知道这就是我使用其他 JavaScript 文件的方式,例如 blob.js、lsWires.js 等...

在 screen.js 中使用此方法无效,因此这些阶段之一导致错误...

window.alert(main.getDefaultValue(value));

理想情况下,我想使用这个默认值来设置一个值,即 var test = main.getDefaultValue(value)

这当然是可能的,您在 default.htm 中使用的脚本声明看起来是正确的。

但是,由于您所描述的方法创建了一个全局 getDefaultValue 函数(添加到全局 window 对象上下文),因此您不会像在 c# 中那样指定主 'namespace' 前缀.

相反,您可以在 LightSwitch 屏幕中使用以下方法,而不是使用 main.getDefaultValue 调用函数:

myapp.BrowseProducts.created = function (screen) {
    window.alert(window.getDefaultValue("123")); // This will display 1234

    // As window is a global object, its window prefix can be omitted e.g.
    alert(getDefaultValue("123")); // This will display 1234
};

或者,如果您想在 main.js 中定义一个全局 defaultValue 变量(可能是您要实现的方法),您将在 main.js 文件中包含以下代码:

var defaultValue = "5678";

然后您将在 LightSwitch 屏幕中按如下方式访问它:

myapp.BrowseProducts.created = function (screen) {
    alert(defaultValue); // This will display 5678
    defaultValue = "Hello World";
    alert(defaultValue); // This will now display Hello World
};

此外,如果您想在主 'namespace' 中组织 functions/properties,您可以在 main.js 文件中使用以下类型的方法:-

var main = (function (ns) {

    ns.getDefaultValue = function (value) {
        var value = "1234";
        return value;
    };

    ns.defaultValue = "5678";

    return ns;
})(main || {});

这些将在您的 LightSwitch 屏幕中按如下方式调用:-

myapp.BrowseProducts.created = function (screen) {
    alert(main.getDefaultValue("123")); // This will display 1234
    alert(main.defaultValue); // This will display 5678
    main.defaultValue = "Hello World";
    alert(main.defaultValue); // This will now display Hello World
};

此类方法在以下帖子中有所介绍:-

How to span javascript namespace across multiple files?

JavaScript Module Pattern: In-Depth