求教 Vue 组件的使用问题

一直使用单文件的方式构建 Vue 项目,今天因为各种原因需要用非构建方式编写 Vue 代码,遇到一个问题:

比如 HTML 为:

<body>
  <app>
    <child></child>
  </app>
</body>

JS 为:

// Child.
const Child = Vue.extend({
  template: '<h1>This is the children.</h1>'
});

// App.
const App = Vue.extend({
  data () {
    return {...}
  },
  components: {
    Child
  }
});

// Root Instance.
Const Root = new Vue({
  el: 'body',
  components: { App }
});

这样写是找不到 child 的,不过好像有两种方法:

  1. Root 中注册 child.(或全局注册)

  2. Apptemplate 中引入 child 而不是 HTML 中.

但是如果用第一种方式, child 组件并不听从 app 组件内的 data,而是听从于 Root 中的 data,比如 <child :show="loading" v-if="loading"></child>,传入的 loading 不是从 app 中来的而是从 Root 中的,这和用 单文件 + Webpack 组织的 Vue 项目行为完全不同;

至于第二个问题,如果想在 HTML 中写好组件标签而不是写到 template 中,这样是不可以的么?

希望各位能指点一二,感激不尽!

阅读 3.4k
1 个回答

给 App 加上 inline-template

<app inline-template>
  <child></child>
</app>

这样就和 .vue 文件里的 <template></template> 行为一致了.

参看:内联模板

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题