为了账号安全,请及时绑定邮箱和手机立即绑定

vue局部组件的问题

vue局部组件的问题

LEATH 2019-03-21 18:19:10
<!DOCTYPE html><html><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script></head><body><!-- TODO: 用全局组件方式写就没问题,用局部组件的方式就出现这个问题了 --><div id="app">    <Apptext        v-for="item in list"        :eatList="item"        v-bind:key="item.id"    ></Apptext></div><script>      var app = new Vue({        el: '#app',         components:{            Apptext:appText        },        data: {            list:[                { id: 0, text: '蔬菜' },                { id: 1, text: '奶酪' },                { id: 2, text: '随便其它什么人吃的东西' }            ]        },    })    var appText = {        props:['eatList'],        template: '<li>{{ eatList.text }}</li>'    }</script></body></html>最近初学vue,看官方文档的一个例子自己用局部组件改写的吗,但是浏览器总是会报错,而用全局组件就没问题
查看完整描述

5 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

appText是局部注册的没错,但是Apptext这个是什么,没有说明哦


查看完整回答
反对 回复 2019-04-09
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

你这样写明显是组件会报错啊,appText这个应该是apptext


查看完整回答
反对 回复 2019-04-09
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

组件注册的步骤是对的,错在了appText这个变量上,当你使用这个变量的时候它的值是undefined,原因是你在使用前没有定义。
补充一下,为子组件传值时要使用kebab-case(短横线)的命名模式,而不是PascalCase(驼峰命名)

查看完整回答
反对 回复 2019-04-09
?
开满天机

TA贡献1786条经验 获得超13个赞

https://img1.sycdn.imooc.com//5cac4bc000010afe07610555.jpg

注册驼峰 引用小写短横线

查看完整回答
反对 回复 2019-04-09
?
HUWWW

TA贡献1874条经验 获得超12个赞

Emmmm,这个是var的变量提升造成的,因为你把appText对象的赋值放在了Vue实例化的后面。


实际上是相当于这样的:


var appText = undefined


var app = new Vue({

  el: '#app',

  components: {

    Apptext: appText // 这个时候appText是undefined的

  },

  data: {

    list:[

      { id: 0, text: '蔬菜' },

      { id: 1, text: '奶酪' },

      { id: 2, text: '随便其它什么人吃的东西' }

    ]

  },

})


appText = {

  props:['eatList'],

  template: '<li>{{ eatList.text }}</li>'

}

改成 把appText的赋值放在new Vue之前就可以了。


PS::eatList="item" 需要写成 :eat-list="item"


查看完整回答
反对 回复 2019-04-09
  • 5 回答
  • 0 关注
  • 653 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信