VueJS:对组件内的子组件使用 x-template

体式

我没有正确理解将 x-template 用于 vuejs 组件内的子组件的使用模式。

所以,我有一个名为 CategoryNav.vue 的组件,它有一个模板。为了显示一个列表,我们使用了一个 x 模板。但是我渲染了我的页面,它无法识别使用 x-template 创建的这个组件。我认为我使用它不正确。任何帮助表示赞赏。这是我的主要组件代码。

分类Nav.vue

<template>
<div class="">
  <menu-list :items="treeList"></menu-list>
</div>
</template>

<script type="text/x-template" id="menu-list-template">
  <ul v-if="items.length">
    <li v-for="item of items">
      <a :href="item.value">{{ item.label }}{{ item.id }}</a>
      <menu-list :items="item.children"></menu-list>
    </li>
  </ul>
</script>
<script>
const MenuList = {
  name: 'menu-list',
  template: '#menu-list-template',
  props: ['items']
}

export default {
  name: 'category-nav',
  components: {
    MenuList
  },
  computed: {
    list () {
      return this.$store.state.topics
    },
    treeList () {
      const items = this.list.map(item => Object.assign({}, item, { children: [] }))
      const byValue = new Map(items.map(item => [item.value, item]))
      const topLevel = []
      for (const item of items) {
        const parent = byValue.get(item.parent)
        if (parent) {
          parent.children.push(item)
        } else {
          topLevel.push(item)
        }
      }
      return topLevel
    }
  }
}
</script>
十年之月

这行不通。<script type="text/x-template" id="menu-list-template">需要存在于 DOM 中的某个地方以便 Vue 找到它,并且由于它在该<template>部分之外,因此vue-loader会将其视为自定义块(默认情况下将被忽略)。

单个 *.vue 文件旨在仅包含一个组件。我不建议混合使用 x-templates vue-loader您应该将每个组件都放入一个 *.vue 文件中,以便对其进行预编译,这样您就无需在生产版本中捆绑 vue 编译器。

您可以:

  1. (推荐)将子组件解压到自己的*.vue文件中,导入到CategoryNav.vue模块中。
  2. 您可以完全在CategoryNav.vue <script>内定义子组件,但它不能有编译模板。您必须为其指定渲染功能(混乱)。
  3. 与#2 相同,但您可以将模板指定为字符串,但您需要在生产版本中提供 Vue 编译器。如果要使用 x-template 而不是字符串,则需要确保 x-template<script>在 DOM 中。

对Vue公司构建文件的解释。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Twig x-template文件中的Vue JS组件如何工作

来自分类Dev

<template />上的Laravel Mix Vuejs组件语法错误

来自分类Dev

将ng-template传递给子组件

来自分类Dev

VueJS:更改子组件内的数据并更新父组件的数据。

来自分类Dev

在x-kendo-template中使用Razor查询

来自分类Dev

如何使用Vue在组件的<template>内放置数据

来自分类Dev

使用A <int> :: template B <int> x;定义变量是否符合C ++标准?

来自分类Dev

比较两个组件-组件X是组件A的实例吗

来自分类Dev

访问Vuejs组件内的元素

来自分类Dev

在vuetify 2.x组件上使用fill-height

来自分类Dev

react - 使用 for 循环创建 x 个组件实例

来自分类Dev

MeteorJS和x-editable-reactive-template

来自分类Dev

为什么从嵌套的HTML表元素中悬挂出这个简单的VueJS 2.x组件?

来自分类Dev

Vuejs将动态数据从父组件传递到子组件

来自分类Dev

将数据从子组件传递到子组件 Vuejs 2

来自分类Dev

vuejs中父组件的数据变化不会更新子组件

来自分类Dev

子组件使用 onChange(),更新父组件

来自分类Dev

Vuejs:更新子组件的 Map 属性值

来自分类Dev

VueJS组件

来自分类Dev

拖动组件时如何获取组件的x位置?

来自分类Dev

网络X中最大的弱连接组件

来自分类Dev

在每个“ X” React组件之后插入元素

来自分类Dev

组件x86:隐藏光标

来自分类Dev

非法矢量组件名称“ x”(金属)

来自分类Dev

4.x版的Android GUI组件

来自分类Dev

在每个“ X” React组件之后插入元素

来自分类Dev

AngularJS 1.x 中的递归组件

来自分类Dev

如何动态渲染 JSX 组件 X 次?

来自分类Dev

如何渲染反应组件 x 次?