【问题标题】:Lightswitch HTML global JS file to pass variableLightswitch HTML 全局 JS 文件传递​​变量
【发布时间】:2016-01-29 19:59:55
【问题描述】:

我知道这在 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)

【问题讨论】:

    标签: javascript visual-studio-lightswitch lightswitch-2013


    【解决方案1】:

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

    但是,由于您描述的方法创建了一个全局 getDefaultValue 函数(添加到全局窗口对象上下文中),因此您不会像在 c# 中那样指定主“命名空间”前缀。

    您可以在 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
    };
    

    此外,如果您想在主“命名空间”中组织您的函数/属性,您可以在 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

    【讨论】:

    • 感谢您的帮助,又是一个绝妙的答案,这将为我节省很多时间!!
    • 我认为这可以适应从屏幕设置默认值?
    • 是的,如我的示例最后所示,默认可以从屏幕更改(在屏幕创建方法中从“5678”更改为“Hello World”的示例)
    • 让它工作,在我问完后阅读你答案的底部:) 为上面的好答案欢呼
    猜你喜欢
    • 2020-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 2011-11-03
    • 1970-01-01
    相关资源
    最近更新 更多