异步执行 LightSwitch Javascript

Execute LightSwitch Javascript Asynchronously

我的 Lightswitch 应用程序中有一个 Back Button,我需要将其直接 link 到特定屏幕。 linked 屏幕需要一个 ProjectID 值,我从您单击 Back 的页面提供该值。

The problem is that when I click back, I am brought to the right page but no records display until after a page refresh. I need to refresh the page AFTER the load is complete

我一直在搞乱 setTimeoutsetInterval,但没有运气。这可以在我的按钮点击中完成,还是我应该使用完全不同的导航方法?

带有 setTimeout 的代码(不向后导航):

myapp.ViewRecordDetails.BackButton_execute = function (screen) {
    // window.history.back();
    showDetails = function () {
        setTimeout(function () {
            window.location.reload(true);
        }, 0)
    }
    window.location.reload(true);
};

向后导航但需要刷新才能显示数据的代码:

myapp.ViewRecordDetails.BackButton_execute = function (screen) {
    // window.history.back();
    myapp.showViewProjectDetails(screen.TBG_V_TimeLog_Detail), function () {
    }//Need to execute reload AFTER show screen has completed
};

您可能会注意到我已经注释掉了 widow.history.back();...这在我的应用程序的第一次迭代中是有效的,但现在有两种不同的方式登陆页面,因此历史记录是不可靠的

不知道我以前怎么没有得到这个..

BobbyJ 的回应让我想到 commitChanges,这让我想到跳过 javascript 技巧,并使用我已经拥有的东西。

此代码有效:

myapp.ViewRecordDetails.BackButton_execute = function (screen) {
    // window.history.back();
    myapp.showViewProjectDetails(screen.TBG_V_TimeLog_Detail).then(function(){
         myapp.commitChanges()
            }).then(function () {
                window.location.reload(true);//Need to execute reload AFTER show screen has completed
    })
};

这就是我真正需要的:

myapp.ViewRecordDetails.BackButton_execute = function (screen) {
    myapp.showViewProjectDetails(screen.TBG_V_TimeLog_Detail).then(function(){
                window.location.reload(true);
    })
};

只是利用 .then() 功能。相当漂亮