VueJS Slot v-text

时间:2017-06-18 10:08:17

标签: javascript vue.js vuejs2

我想在默认范围内显示变量。这个版本有效。

<slot>{{namedSlotText}}</slot>   

但是当我以其他方式尝试时,变量不会显示。

模板

<div id="app">
  <my-component></my-component>
</div>

代码

let vm = new Vue({
  el:"#app",
  components:{    
    myComponent:{
      template:`
        <div>
         <slot :text="namedSlotText"></slot>
        </div>
      `,
      data:()=>({
        namedSlotText: "This is default slot text"
      })
    }
  }
})

我看到v-text工作的地方。

2 个答案:

答案 0 :(得分:2)

当您将属性传递给slot时,基本上您正在使数据可用于插槽的内容。该概念称为scoped slots

此代码

<div>
  <slot :text="namedSlotText"></slot>
</div>

使text属性可供插槽内容使用。为了使用该属性,您必须首先定义范围模板,然后在内容中显式引用该属性。

<my-component>
  <template scope="{text}">
    {{text}}
  </template>
</my-component>

答案 1 :(得分:0)

避免对数据使用箭头函数,正确的ES2015语法(内部组件)是:

data() {
  return {
    namedSlotText: "This is default slot text"
  }
}

因为您使用的是标准插槽,所以您可以设置默认值:

Vue.component('my-component', {
  template: `<div><slot>{{slotText}}</slot></div>`,
  data() {
    return {
      slotText: "This is default slot text"
    }
  }
})

这是JSFIddle:https://jsfiddle.net/va438nqk/