Vue 动态添加模板数据

2020-04-02  本文已影响0人  全球顶尖伪极客

动态添加不同类型的模板数据

v-if或者v-else-if
 <template v-for="item of zone">
        <component v-if="item.tempCode==='HOT_ACTIVITY_TMP'"
                   :key="item.tempCode"
                   :is="'HotZoneTemplate'"
                   :info="item"></component>
        <component v-else-if="item.tempCode==='PRO_SERVICE_TMP'"
                   :key="item.tempCode"
                   :is="'ServeZoneTemplate'"
                   :info="item"></component>
      </template>
 Property or method "Template1" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property. See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.

found in

---> <Anonymous>
       <App> at src/App.vue
         <Root>

意思就是该模板名字需要 在data中申明,或者直接写成字符串模板名

写法1——模板直接单引号字符串模板名
<template>
  <div>
    <template v-for="item of list">
      <component v-if="item.tempCode===1"
                 :key="item.tempCode"
                 :is="'Template1'"></component>
      <component v-if="item.tempCode===2"
                 :key="item.tempCode"
                 :is="'Template2'"></component>
    </template>
  </div>
</template>
写法2——data中返回该字符串
<template>
  <div>
    <template v-for="item of list">
      <component v-if="item.tempCode===1"
                 :key="item.tempCode"
                 :is="'Template1'"></component>
      <component v-if="item.tempCode===2"
                 :key="item.tempCode"
                 :is="'Template2'"></component>
    </template>
  </div>
</template>

<script>
import Template1 from './Template1'
import Template2 from './Template2'

export default {
  components: {
    Template1,
    Template2
  },
  data () {
    return {
      list: [],
      Template1,
      Template2
    }
  },
上一篇 下一篇

猜你喜欢

热点阅读