Vue.js 学习笔记 (4)

编辑 TodoList.vue 的模板文件,代码如下:

<template> <div> <input> <button>提交</button> </div> <ul> <li>1</li> <li>2</li> <li>3</li> </ul> </template>

这时打开浏览器会发现报错了

1565001521769

因此我们对模板文件进行修改,使用一个 div 包裹上面的两个标签,发现浏览器可以正常显示了

数据绑定

在 vue-cli 中,数据绑定采用另外一种语法:此时数据不是直接绑定,而是间接通过函数来返回

<script> export default { <!-- 以下是 data : function(){} 的缩写 --> data(){ return { inputValue : "" } } } </script> 单击事件

给提交按钮添加单击事件:

<button @click="handleClick">提交</button>

定义函数:依然可以采用 ES6 的语法,简略的写成 handleClick(){}

<script> export default { methods:{ handleClick (){ alert(123) } } } </script> 建立子组件

vue-cli 的子组件放在 compontents 目录下:

1565002961390

复制一份干净的 .vue 代码,起名 TodoItem.vue

<template> </template> <script> export default { } </script> <style> </style>

添加模板数据,在 TodoList.vue 实例中引入 TodoItem.vue 组件,并注册

<script> // 引入组件, import 组件名 from 组件路径 import TodoItem from './components/TodoItem' export default { // 注册组件, ‘组件标签名’:组件名 components:{ 'todo-item' : TodoItem }, ......

找到合适的位置,添加组件标签

<ul> <todo-item></todo-item> </ul> 父组件向子组件传值

通过定义属性的方式来给子组件传值

定义 content 属性,index 属性传给子组件

<ul> <todo-item v-for="(item, index) of list" :key="index" :content="item" :index="index" ></todo-item> </ul>

子组件声明接收的值:

<script> export default { props:['content'] } </script>

通过插值表达式来显示值:

<template> <li>{{content}}</li> </template> 子组件向父组件传值

通过发布/订阅的方式来实现子组件向父组件传值

在子组件的单击方法中定义发布消息的事件,事件名 delete, 参数:当前 li 元素的 index

handleDelete(){ this.$emit('delete', this.index) }

父组件接收消息:并触发函数的执行

<ul> <todo-item v-for="(item, index) of list" :key="index" :content="item" :index="index" @delete="handleDelete" // 接收消息 ></todo-item> </ul> handleDelete (index){ this.list.splice(index, 1) // 删除对应的元素 } 全局样式与局部样式

对于每一个 vue 文件都包含 style 标签,这个 style 标签有一个属性 scoped 如果添加此属性则该标签内所有的样式仅对当前文件有效。开发中尽量都添加上使得文件间的耦合性更低

结语

这个笔记仅涵盖了 Vue 的一点点基础知识,如果读者想要深入学习,可以前往官网参考文档继续学习:https://cn.vuejs.org/v2/guide/

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpfxgw.html