2017-09-13 69 views
0

我正在使用Vue資源連接到我的後端api。我有一個表單組件,用於創建新資源項目和修改現有資源項目。表單工作正常,但是當我想保存表單時,它需要使用正確的http方法進行api調用。如果我正在創建一個新項目,它應該使用POST方法,如果我正在更新現有項目,它應該使用PUT方法。現在,我的形式保存方法看起來是這樣的:Vue資源,使用相同的表單進行插入和更新

if(this.itemId > 0) { // Update existing item 
    myresource.update({id: this.itemId}, this.item).then(response => { 
     //... 
    }, response => { 
     //... 
    }); 
} 
else {  // Post new item 
    myresource.save({}, this.item).then(response => { 
     //... 
    }, response => { 
     //... 
    }); 
} 

基本上,我必須使用if語句來檢查是否使用updatesave資源的功能,那麼成功/失敗的承諾都使用相同的碼。有沒有一些方法,以這兩種方法具有這樣的結合上面:

var method = this.itemId ? 'PUT' : 'POST'; 
myresource.request(method, {id: this.itemId}, this.item).then(response => { 
     //... 
    }, response => { 
     //... 
    }); 

上面的代碼顯然是行不通的,但有一個類似的方式來做到這一點不使用if聲明和重複我的成功/每個請求類型失敗的承諾?

回答

0

一個簡單的辦法是在一個單鏈創建基於條件的請求,然後連接其餘的承諾:

const request = (this.itemId > 0) ? myresource.update ? myresource.save; 
request({ 
    id: this.itemId // Make the save call ignore the id 
}, this.item).then(response => { 
    // Shared code 
}); 
+0

這看起來像它應該很好地完成。謝謝! – matt