没有合适的资源?快使用搜索试试~ 我知道了~
Vue04.pdf
需积分: 9 0 下载量 82 浏览量
2022-09-06
08:59:33
上传
评论
收藏 1.99MB PDF 举报
温馨提示
试读
16页
Vue04.pdf
资源推荐
资源详情
资源评论
Vue04
Vue04
明日 05.21 加课一天
关于晚间: 有问题尽量在 22:30 之前发, 大概率 10点就睡了
大概率在 第一节课 下课统一回复
复习
复习
配置项
data: 用于存储数据, 这里的数据可以全局使用
当数据发生变化时, 会自动更新相关DOM元素
methods: 用于存储各种方法
方法中的this 是 当前vue 对象 -- 详见 vue01 的 this
关于方法的 自定义传参默认 -- 复习 Day01 的方法部分
computed: 计算属性
特点 : 在使用时不需要 () 能 自动 触发
注意 : 不适合事件触发的函数, 因为事件触发的函数必然是 手动 触发
指令 : 就是 vue 提供的一套属性, 都是 v- 开头
v-text: innerText
v-html: innerHTML
v-show: 就是css的display:none
v-if: 删除DOM元素实现隐藏
v-else, v-else-if
v-for: 循环遍历
v-for="值 in/of 数组"
v-for="(值, 序号) in/of 数组"
支持遍历数字 v-for="值 in 数字"
v-on: 事件绑定
原生: onclick , vue是 v-on:click
简化: @
v-bind: 属性绑定
:属性名="JS代码"
v-model: 双向数据绑定
方向1: 传统 把data中的数据传递到 DOM元素里
方向2: 必须是Form表单元素 才能和用户交互, 用户修改DOM元素,可以同步更新数据项
v-pre : 原样显示代码, 特指 {{}}
v-once : 一次性, 首次渲染之后, 后续数据变化不会刷新DOM
特殊属性:
key: 唯一标识, 当数组发生增删操作时, 提高重新渲染的效率, 复用已存在的元素
作业
作业
<template>
<div>
<!-- 回车 keyup 编号13 名字enter -->
<!-- 事件修饰符 @事件.修饰符 大概: 家乐.单身狗 -->
<!-- @keyup.enter : 按键抬起.回车 -->
<input
@keyup.enter="
todoList.push(kw);
kw = '';
"
type="text"
placeholder="请输入待办事项"
v-model="kw"
/>
<button
:disabled="kw == ''"
@click="
todoList.push(kw);
kw = '';
"
>
确定
</button>
<ul>
<!-- HTML代码, 有HTML的代码规范, 作者为了大家容易理解, 所以设计的像JS -->
<li v-for="(todo, i) in todoList" :key="i">
<span>{{ todo }}</span>
<button @click="todoList.splice(i, 1)">删除</button>
<button @click="removeTodo(i)">删除</button>
</li>
</ul>
<!-- 数组长度 == 0, 代表数组里没有数据了 -->
<div v-show="todoList.length == 0" class="warning">暂无待办事项</div>
</div>
</template>
<script>
export default {
methods: {
// 方法参数: 接收来自HTML的值
removeTodo(i) {
// JS代码的语法要求: 用 this 从当前对象取值
this.todoList.splice(i, 1);
},
},
data() {
return {
todoList: ["吃饭", "睡觉", "打亮亮"],
// 输入框的值: 通过双向绑定捆绑数据
kw: "",
};
},
};
</script>
<style lang="scss" scoped>
.warning {
background-color: orange;
width: 200px;
text-align: center;
line-height: 40px;
color: white;
border-radius: 4px;
}
自定义指令
自定义指令
</style>
<template>
<div>
<!-- 高级操作: 自定义指令 -- 要求使用者必须熟练使用 原生DOM -->
<!-- vue官方默认提供了很多指令 例如 v-text v-show v-html... -->
<!-- 作为使用者, 可以根据自身的项目需要, 来自定义指令 -->
<ul>
<!-- v-xx="JS代码" 指令的值是JS代码 -->
<li v-color="'purple'">凯凯</li>
<li v-color="'blue'">小马</li>
<li v-color="'orange'">小婷</li>
<!-- 仿写系统的 v-text, 让值原样显示到 标签里 -->
<li v-textH="'<h1>Hello World</h1>'"></li>
<!-- 自定义指令 v-green, 作用是让DOM元素变绿 -->
<!-- v- 是指令的固定前缀 -->
<li v-green>亮亮</li>
<li v-red>家乐</li>
</ul>
</div>
</template>
<script>
export default {
// directive: 指令
directives: {
textH(sui, bian) {
sui.innerText = bian.value;
},
// v-color="'purple'"
color(el, bindings) {
// el: 参数1, 代表当前元素
// bindings: 参数2, 绑定的值
console.log("bindings:", bindings);
el.style.color = bindings.value; //value是什么,详见后台打印
},
// v-red
red(suibian) {
suibian.style.color = "red";
},
// v-green: v- 固定前缀 green 名称
green(el) {
// 参数1: 指令所在的元素
console.log("el:", el);
console.dir(el);
el.style.color = "green";
},
},
};
指令
指令
案例
案例
</script>
<style lang="scss" scoped></style>
<template>
<div>
<!-- 指令的生命周期 -->
<!-- 生命周期: 拟人的说法 丛生到死经历的过程 -->
<!-- 例如: 备孕->怀孕->待产->出生->学习中..->学习完->快死了->死了 -->
<!-- 指令: 创建->绑定在DOM元素->寄生在DOM上 -> 销毁 -->
<input type="text" />
<br />
<!-- v-focus: 调用DOM元素的 focus 方法, 让其获得焦点 -->
<input type="text" v-focus />
<br />
<input type="text" />
</div>
</template>
<script>
export default {
directives: {
// DOM元素: 先创建 -> 设置各种属性 -> 添加到页面上显示
// 详见 : 案例.html
focus: {
// 自选生命周期, 来触发函数
inserted(el) {
// insert: 插入, 代表 DOM元素 插入到 页面上显示
el.focus();
// 指令所在的元素, 添加到页面上的时候, 触发 焦点
},
},
// 下方写法: 是指令的语法糖写法, 其触发时机 是 DOM元素创建和更新时
// focus(el) {
// console.dir(el); // 找 原型 -> 原型 -> 原型 里, 有focus方法,
// // 作用: 让DOM元素获取焦点
// el.focus();
// },
},
};
</script>
<style lang="scss" scoped>
</style>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
剩余15页未读,继续阅读
资源评论
就一把蒲扇
- 粉丝: 10
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功