Vue资源 - 动态确定http方法

时间:2017-08-21 19:39:17

标签: javascript vue.js vuejs2 vue-resource

我想动态确定适当的http方法并进行单个api调用。但是,当我调用该方法时会抛出异常。

我希望我做错了,而不是这是vue-resource错误。有人会有什么建议吗?感谢

例如:

let method = this.$http.post

if (this.model.id) {
    method = this.$http.put
}

method(
    this.url,
    this.model,
    options
).then(response => {
    this.$router.push(this.redirect_to)
}).catch(response => {
    console.log(`Error: ${response.statusText}`)
})

javascript TypeError会抛出消息"这不是函数"

下面的代码有效,但有点啰嗦。

if (this.model.id) {
    this.$http.put(
        this.url,
        this.model,
        options
    ).then(response => {
        this.$router.push(this.redirect_to)
    }).catch(response => {
        console.log(`Error: ${response.statusText}`)
    })

} else {
    this.$http.post(
        this.url,
        this.model,
        options
    ).then(response => {
        this.$router.push(this.redirect_to)
    }).catch(response => {
        console.log(`Error: ${response.statusText}`)
    })
}

1 个答案:

答案 0 :(得分:3)

您需要将函数绑定到当前上下文。

let method = this.model.id ? this.$http.put.bind(this) : this.$http.post.bind(this)

或者只使用索引器方法。

let method = this.model.id ? 'put' : 'post'
this.$http[method](...).then(...)