2017-09-13 6 views
0

私はバックエンドAPIに接続するためにVueリソースを使用しています。私は、新しいリソース項目の作成と既存のリソース項目の変更の両方に使用するフォームコンポーネントを持っています。フォームは正常に動作しますが、フォームを保存するときは、api呼び出しに適切なhttpメソッドを使用する必要があります。新しいアイテムを作成する場合はPOSTメソッドを使用し、既存のアイテムを更新する場合はPUTメソッドを使用する必要があります。基本的に、私はその後、成功は/約束を失敗し、両方同じを使用し、updateまたはsaveリソース機能を使用するかどうかをチェックするためにifステートメントを使用する必要が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 => { 
     //... 
    }); 
} 

:今のところ、この方法の保存私のフォームは次のようになりますコード。/

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

関連する問題