2017-09-13 10 views
0

Vue 리소스를 사용하여 백엔드 API에 연결합니다. 새로운 리소스 항목을 만들고 기존 리소스 항목을 수정하는 데 사용하는 양식 구성 요소가 있습니다. 양식은 잘 작동하지만 양식을 저장하려면 api 호출에 적절한 http 메소드를 사용해야합니다. 새 항목을 만드는 경우 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 => { 
     //... 
    }); 
} 

는 기본적으로,이 update 또는 save 자원 기능의 사용 여부를 확인하기 위해 if 문을 사용해야 후 성공/약속을 실패 모두 동일하게 사용 : 바로 지금, 저장 방법 내 양식은 다음과 같이 보입니다 암호./

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