Aurelia / Typescript - 上传后刷新页面

时间:2017-04-26 18:25:27

标签: typescript asp.net-web-api aurelia

我的public run()方法中有一些调用通过API调用检索一些信息。页面加载时会发生这种情况。

但是,一旦加载,用户将执行上传。上传完成后,我想刷新页面,其中包含public run()拉出的信息 - 此时此信息应根据上传情况包含新信息。

我尝试在上传结束时添加this.run(),但似乎无效。我基本上只想在上传后刷新(回发)这个东西。

任何想法都会受到最高的赞赏。

    public run(): void {


    try {
        this._apiBureauModHistory.GetTopBureauModUpdateHistory().then(x => {
            if (x) {
                this.bmuh = x;     
                switch (this.bmuh.Bureau) {
                    case "00":
                        this.bmuh.Bureau = "Ncci";
                        break;
                    case "04":
                        this.bmuh.Bureau = "CA";
                        break;
                    case "31":
                        this.bmuh.Bureau = "NY";
                        break;
                    case "37":
                        this.bmuh.Bureau = "PA";
                        break;
                    case "07":
                        this.bmuh.Bureau = "DE";
                        break;
                    case "48":
                        this.bmuh.Bureau = "WI";
                        break;
                    case "21":
                        this.bmuh.Bureau = "MI";

                    case "22":
                        this.bmuh.Bureau = "MN";

                }
            }

        })
    }
    catch (e) {
        this.running = false;
        this.runError = e;
    }

    try {
        this._apiBureauModHistory.GetAllBureauModUpdateHistory().then(x => {
            if (x) {

                this.bmuh_arr = x;  
               // this.bmuh_arr.forEach(function (t) { if (!this.bmuh_summ.includes(t.UploadedDate)) this.bmuh_summ.push(t.UploadedDate); });
                for (var i = 0; i < this.bmuh_arr.length; i++) {
                    for (var j = i + 1; j < this.bmuh_arr.length; j++){
                        if (this.bmuh_arr[i].UploadedDate === this.bmuh_arr[j].UploadedDate)
                            j = ++i;
                           // this.bmuh_summ.push(this.bmuh_arr[i].UploadedDate); 
                    }

                }
            }
        })
    }
    catch (e) {
        this.running = false;
        this.runError = e;
    }
}


upload(): void {
    var formData = new FormData()
    for (let i = 0; i < this.files.length; i++) {
        formData.append('files', this.files[i]);
    }

    this.http.fetch(window.wcApiUrl + '/Lookup/BureauModUpdate/CreateBureauModUpdates', {
        method: 'post',
        body: formData
    })

}

1 个答案:

答案 0 :(得分:0)

upload()函数中,您有一个fetch语句。这应该返回一个解决或拒绝的承诺。您可以像这样使用.then():

this.http.fetch(window.wcApiUrl + 
'/Lookup/BureauModUpdate/CreateBureauModUpdates', {
    method: 'post',
    body: formData
})
.then(response =>{
   //do something with response.json()
   this.updateInfo(response.json());
})
.catch(err=>console.log('something error-ed : %o',err);

例如,您可以从帖子返回您需要的信息作为JSON并使用它。 (fetch' by the way is asynchronous, so code after fetch`将在返回响应之前运行。)

您甚至可以刷新页面,但这会破坏单页应用程序模式的目的。