无法将Subject作为参数Vue传递

时间:2018-05-03 02:57:13

标签: vue.js rxjs

根据说明我有以下内容......

<template>
    <jg-header :greeting="greeting" :subject="message$"></jg-header>
</template>
<script>
   import * as Rx from 'rxjs/Rx';
   const messageObservable = new Rx.Subject();
   export default{
   subscriptions: {
         message$: messageObservable
   },
   data: function(){
       return {
           greeting: "My Name"
       }
   },
</script>

<template lang="pug">
div(class="jg-header")

  md-button.md-icon-button(@click="toggle()")
      md-icon menu
  h1 {{ greeting }}
  h2 {{ subject }}
</template>
<script>
export default {
    props: ['greeting', 'subject'],
    methods: {
        toggle: function(){
            console.log(Object.entries(this.$props)[0]);
        }
    }
}
</script>

问候语合格,但主题未定义。

  

(2)[“subject”,undefined]

所以主题仍未定义。为什么不应该由:subject="message$"设置?

1 个答案:

答案 0 :(得分:0)

在vue.js中,数据绑定喜欢`:subject =“message $”,它会将属性主题的值替换为消息的值相应的数据对象上的$ 属性。在您的情况下,消息$ 不属于数据对象,因此无法绑定。 请尝试以下更改。

import * as Rx from 'rxjs/Rx';
const messageObservable = new Rx.Subject();
export default{
    data: function(){
       return {
           greeting: "My Name",
           message$: messageObservable
       }
    },
}