如何将数据传递到vue.js中的组件?

时间:2018-10-16 22:25:58

标签: vue.js vuejs2

我有这个

<template id="vButton">
    <button v-bind:title="name">{{name}}</button>
</template>

<div id="app">
    <ti-button></ti-button>
</div>

js

    Vue.component('ti-button', {
        props: ['name'],
        template: '#vButton'
    });

    var vm2 = new Vue({
        el: '#app',
        data: {
            name : 'hi'
        }
    });

我希望按钮具有innerText和title属性以说“ hi”。但事实并非如此。有人知道为什么吗?

参考:https://vuejs.org/v2/guide/components.html

谢谢

2 个答案:

答案 0 :(得分:1)

Vue.component('ti-button', {
  props: ['name'],
  template: '#vButton'
});

var vm2 = new Vue({
  el: '#app',
  data: {
    name: 'hi'
  }
});
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script>
<script type="text/x-template" id="vButton">
  <div>
    <button>{{name}}</button>
    <button>{{$root.name}}</button>
  </div>
</script>

<div id="app">
  <ti-button name="first_button"></ti-button>
</div>

UPD: 您是说看不到吗? enter image description here

答案 1 :(得分:0)

您所做的事情大部分都是正确的,您只需要使用v-bind将数据传递给prop:

<ti-button v-bind:name="name"></ti-button>

可以不使用v-bind传递静态值,但是对于像尝试传递那样的动态值,则需要绑定道具。 Check out the static/dynamic prop documentation以获得更多信息。

这是一个有效的演示:https://codepen.io/egerrard/pen/qJpzMQ