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

时间:2016-07-11 10:00:06

标签: visual-studio-lightswitch visual-studio-2015

我有一个包含多个标签的from tastypie import resources, fields class ResponseResource(resources.ModelResource): class Meta: resource_name = 'response' queryset = Responses.objects.all() ... class QuestionResource(resources.ModelResource): responses = fields.ToManyField(ResponseResource, 'responses', full=True) class Meta: resource_name='question' queryset = Questions.objects.all() ... 文件。为了在标签之间切换,我没有依赖Lightswitch的向下钻取菜单,而是使用Home.lsml在页面顶部添加了一个固定菜单(JQuery工具栏)。通过使用此工具栏,我能够在default.htm中驻留的选项卡之间成功导航。

我的问题是,当我使用查看/浏览相关的Home.lsml文件时,我显然没有对.lsml进行保留,因此显然无法访问其他标签它们位于home.lsml文件中。在这种情况下,我收到警告

  

0x80004005 - JavaScript运行时错误:找不到包含该选项卡的选项卡   名称' MainTab2'在屏幕上' BrowseTab1'。

简而言之,如何打开当前DOM中不可用的标签

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

1 个答案:

答案 0 :(得分:1)

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

$("#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)返回WinJS.Promise,当导航到目标屏幕的操作完成时,它会完成,从而允许showTab方法执行一次屏幕可用。

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

Lightswitch html how to know when async iteration is done