簡體   English   中英

異步執行LightSwitch Javascript

[英]Execute LightSwitch Javascript Asynchronously

我的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(); ...這在我的應用程序的第一次迭代中有效,但是現在有兩種不同的方式可以登陸頁面,因此歷史記錄不可靠

不知道我以前怎么沒得到這個..

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM