看你自己想要用什么编译软件,我是vs
奥没事了,我以为是python里面的引入路径。。。原来是调用下面的那个Vue实例
我傻了,我新创建了一个文件夹,vue.js文件没有引入进去
代码的编译是从上到下的
来尝试回答一下:引用官网全局注册:全局注册的组件可以用在其被注册之后的任何 (通过 new Vue
) 新创建的 Vue 根实例,也包括其组件树中的所有子组件的模板中。根实例的所有内容其实就是整个页面,和你说的在根实例的挂载点下是一样的
// Vue.js (v2.6.12 Line:136 ~ 139)
/**
* Check if an attribute is a reserved attribute.
*/
var isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');
item 变量是来自v-for的。
每次循环都从list数组里取出一个成员,叫item。
调试下呗,chrome f12 打开控制台就知道问题了
在子组件中,不能直接使用父组件里的内容,需要在子组件中接受后,才能使用
代码执行顺序
补充一下
驼峰命名还有其它命名规范
和全局组件一样的
vue中的父子组件之间的作用域都是独立的,相互之间的数据是无法干涉独立的,只能通过父子组件传值的方式实现数据之间的传递
可以,父组件传值到子组件的属性,可以随便起名字,尽量取见名知意的
因为
template:'<li @click = "handleClick">{{content}}</li>',
里面已经有li标签了
可以用WebStorm呀,和idea是同一家公司开发的IDE,不过WebStorm是专门针对前端的,应该会更加友好些。不过我建议你使用VSCode,相比起来VSCode更加轻量级,而且里面有很多开源插件,方便前端的开发,而且慕课网里还有专门介绍VSCode的免费课程。
列表应该放在root挂载点内,你没放进去
props数组装的是多个属性的名称,比如我要把index也当成参数传递给组件,:index="index",这个时候就应该写
props: ['content', 'index']
这个不是什么新版写法 而是从外部定义一个Vue组件模版 建议先看官方文段熟悉下语法吧
Vue.component是全局组件的定义方法 你可以把这个模版实例看成是Vue实例的子集 你是想在实例中编写组件的组件吗?
首先要定义一个props属性用来接收父组件传来的数据 其次组件实例中的component语法写错了 应为
component:{ func(){} }
把数组里面的项直接换成子数组就可以了,数组项可以是值或者对象
刚刚看了下官方文档,明白了:因为html是不区分大小写的,v-bind:绑定的其实是todocontent,然而在组件里是js语法区分大小写,参数名是todoContent,所以接收不到参数
这样就行了
一个可以自定义的属性,<todo-item :content="item"></todo-item>中的content类似于js中的setAttribute('content', {{item}}),
Vue.component('todo-item',{
template:'<li>{{item}}</li>'
})
这里的item不需要{{}}
todolist这个组件名的命名格式有问题,应该改为 todo-list 这样的格式
详细信息可以参看https://cn.vuejs.org/v2/guide/components-registration.html 里面的简介,或者
w3c的规范 https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name