0.0.8 • Published 6 years ago

vue-rx-decorators v0.0.8

Weekly downloads
147
License
MIT
Repository
github
Last release
6 years ago

vue-rx-decorators

Binding helpers for vue-rx.

Dependencies

Installation

$ npm install --save vue-rx-decorators
# or
$ yarn add vue-rx-decorators

Example (use subscription)

<template>
  <div>
    <p>counter: {{ countValue }}</p>
    <p><button v-stream:click="counter$">Add count</button></p>
  </div>
</template>
<script lang="ts">
import Vue from 'vue'
import Component from 'vue-class-component'
import { Observable } from 'rxjs'
import { startWith, map, scan } from 'rxjs/operators'
import { DOMStream, Subscription, DOMStreamObservable } from 'vue-rx-decorators'

@Component({
  name: 'app'
})
export default class App extends Vue {
  @DOMStream()
  private counter$!: DOMStreamObservable<MouseEvent>;
  // use property to use type in your code
  // !doesnt use arrow function (() => {}) in this callback!
  @Subscription(function () {
    return this.counter$.pipe(
      map(() => 1),
      startWith(0),
      scan((result, value) => result + value)
    )
  })
  protected countValue: number
  // old version (0.0.4 < version) use method or computed.
  // you can't use type in your code
  @Subscription()
  protected get countValueOld () {
    return this.counter$.pipe(
      map(() => 1),
      startWith(0),
      scan((result, value) => result + value)
    )
  }
}
</script>

Example (use domstreams)

<template>
  <div>
    <p>counter: {{ countValue }}</p>
    <p><button v-stream:click="counter$">Add count</button></p>
  </div>
</template>
<script lang="ts">
import Vue from 'vue'
import Component from 'vue-class-component'
import { Observable } from 'rxjs'
import { startWith, map, scan } from 'rxjs/operators'
import { DOMStream, Subscription } from 'vue-rx-decorators'

@Component({
  name: 'app'
})
export default class App extends Vue {
  @DOMStream()
  private counter$: DOMStreamObservable<MouseEvent>;
  @Subscription(function () {
    return this.counter$.pipe(
      map(() => 1),
      startWith(0),
      scan((result, value) => result + value)
    )
  })
  protected countValue: number
}
</script> 

Example (use observableMethods)

<template>
  <div>
    <p>counter: {{ countValue }}</p>
    <p><button @click="addCount">Add count</button></p>
    <p><button @click="diffCount">Diff count</button></p>
  </div>
</template>
<script lang="ts">
import Vue from 'vue'
import Component from 'vue-class-component'
import { startWith, scan } from 'rxjs/operators'
import { Subscription, ObservableMethod } from 'vue-rx-decorators'

@Component({
  name: 'app'
})
export default class App extends Vue {
  @ObservableMethod()
  private counter: ObservableMethod;
  @Subscription(function () {
    return this.counter$.pipe(
      map(() => 1),
      startWith(0),
      scan((result, value) => result + value)
    )
  })
  protected countValue: number
  addCount () {
    this.counter(1)
  }
  diffCount () {
    this.counter(-1)
  }
}
</script> 

License

MIT

0.0.8

6 years ago

0.0.7

6 years ago

0.0.6

6 years ago

0.0.5

6 years ago

0.0.4

6 years ago

0.0.3

6 years ago

0.0.2

6 years ago

0.0.1

6 years ago