我使用RxJS
使用vue-rx
并且我有一条路线需要根据参数获取略有不同的AJAX API请求。
我一直在玩各种不同的方法,但这是+应该有+工作的方法。
import Vue from 'vue'
import numeral from 'numeral'
import { Observable } from 'rxjs/Observable'
import 'rxjs/add/observable/interval'
import 'rxjs/add/operator/switchMap'
import 'rxjs/add/operator/map'
import axiosObservable from '../lib/axiosObservable'
export default {
name: 'Exchange',
props: ['exchange_name'],
methods: {
exchangeFetch (exchangeName) {
return Observable
.interval(3000)
.switchMap(axiosObservable.get(Vue.config.infoCoinUrl + '/exchanges/' + exchangeName + '/market-pairs'))
.map((response) => response.data)
}
},
mounted () {
alert(exchangeName)
this.$subscribeTo(
this.exchangeFetch(this.exchange_name),
(data) => {
this.market_pairs = data
})
},
data () {
return {
market_pairs: []
}
},
但是,在浏览过程中,警报只执行一次(每次都会运行错误的AJAX调用)。
我在所有这些(Vue& JS)中都有点愚蠢,我怀疑这可能是vue-rx
框架中的一个错误 - 或者至少是一个令人惊讶的行为(对于noobie)我)。
我喜欢关于vue-rx
的事情是它如何整合到vue.js
生命周期中,并消除了泄漏可观察物的危险(加上AJAX呼叫记录到ddos攻击)。
我正在寻找使用vue-rx API的解决方案,或者至少不要求我停止观察"手动"。
更新1 似乎问题与vue-rx
无关,它是mounted
无法在{props
执行的块1}}改变......
交换是这样加载的,它通常有效,这应该没有错......
<router-link v-for="exchange in exchanges" v-bind:key="exchange.name" class="navbar-item" :to="{ name: 'exchange-show', params: { exchange_name: exchange.name }}">{{ exchange.name }}</router-link>