异步执行LightSwitch Javascript

时间:2016-01-26 14:06:36

标签: javascript jquery asynchronous setinterval visual-studio-lightswitch

我的Lightswitch应用程序中有Back Button,我需要直接链接到特定屏幕。 链接的屏幕需要ProjectID值,我从您点击Back的页面提供该值。

  

问题在于,当我单击后退时,我被带到正确的页面,但在页面刷新之后才会显示任何记录。我需要在加载完成后刷新页面

我一直在弄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(); ...这在我的应用程序的第一次迭代中有效,但现在有两种不同的方式登陆页面,因此历史记录不可靠

1 个答案:

答案 0 :(得分:0)

不确定我之前是怎么做不到的。

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()功能。漂亮俏皮