以编程方式调用 home.lsml 个选项卡

Call home.lsml tabs programmatically

我有一个包含多个选项卡的 Home.lsml 文件。为了在选项卡之间切换,而不是依赖于 Lightswitch 的向下钻取菜单,我使用 default.htm 在页面顶部添加了一个固定菜单(JQuery 工具栏)。通过使用此工具栏,我能够在 Home.lsml.

中的选项卡之间成功导航

我的问题是,当我在 View/Browse 相关的 .lsml 文件上时,我不会显然没有保留 home.lsml 所以显然无法访问home.lsml 文件中的其他选项卡。在这种情况下,我收到警告

0x80004005 - JavaScript runtime error: Could not find a tab with the name 'MainTab2' on screen 'BrowseTab1'.

简而言之,如何打开当前DOM中不可用的选项卡。

我正在使用 Visual Studio 2015 社区版。

扩展 您应该能够使用以下类型的方法:

$("#tabOne").bind("click", function () {
    msls.application.navigateHome().then(function () {
        var screen = new msls.Screen();
        screen.showTab("TabOne");
    });
});

单击工具栏按钮时,此方法使用 LightSwitch navigateHome 方法导航到 HTML 客户端的主屏幕。

或者,如果目标屏幕未指定为主屏幕,您可以使用 showScreen 方法并指定目标屏幕的名称,如下所示:

$("#tabOne").bind("click", function () {
    msls.application.showScreen("Home").then(function () {
        var screen = new msls.Screen();
        screen.showTab("TabOne");
    });
});

这两种方法(navigateHomeshowScreen)return一个WinJS.Promise在操作导航时完成到目标屏幕已完成,允许在屏幕可用后执行 showTab 方法。

如果您有兴趣阅读更多关于承诺的信息(在 LightSwitch HTML 客户端的上下文中),以下 SO post 包含一些有用的详细信息和链接:

Lightswitch html how to know when async iteration is done