如何根据路径参数定义订阅?

时间:2018-02-12 20:52:24

标签: vue.js vuejs2 rxjs vue-rx

我使用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>

0 个答案:

没有答案