Correcting teacher:PHPz
Correction status:qualified
Teacher's comments:
对象里的变量用{{}}插入,且可以进行运算及逻辑等操作,但是一般里面要尽量简介,非必要的情况下逻辑跟运算不往这里面写,逻辑跟运算都写在 module 里
常用指令
<div v-pre>{{msg}}</div>
输出就是{{msg}}
<div v-text="msg"></div>
就等同于
<div>{{ msg }}</div>
v-bind:绑定属性
v-bind:可以给标签内的属性绑定变量或方法,可以简写为:,如
<div v-bind:class="msg"></div>
就等同于
<div :class="msg"></div>
就好比:
let a = 10;
let b = 20;
// get就是
function sum() {
return a + b;
}
console.log(sum());
// set就是
function add(sum) {
a = sum * 0.5;
b = sum * 0.5;
return [a, b];
}
console.log(add(30)[0], add(30)[1]);
v-for="(item,index,num) in arr" :key="item.id"
item:值,index:下标,num 数字索引,:key 必加,这里面的值是什么无所谓,但是必须是一个唯一值实现原理,给 value 绑定一个值,然后使用@input 事件获取当前对象,拿到对应的值
<input type="text" name="111" id="222" :value="msg" @input="getValue($event)"
.lazy 懒加载修饰符
<template>
<div>
<!-- v-if双条件判断如果books里没有内容提示购物车为空,否则显示table表单 -->
<div v-if="books.length <= 0">购物车空空如也,快去选购商品吧~</div>
<table v-else>
<caption>
购物车
</caption>
<thead>
<tr>
<th></th>
<th>编号</th>
<th>商品名称</th>
<th>价格</th>
<th>购买数量</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<!-- v-for得加在tr里,v-for这层也会循环 -->
<tr v-for="(items, index) in books" :key="index">
<td>
<!-- 给每个input绑定v-model的true属性,使其默认选中 -->
<input type="checkbox" v-model="items.check" id="cart" />
</td>
<!-- 索引是从0开始的 索引+1,让编号从1开始 -->
<td>{{ index + 1 }}</td>
<!-- 书名 -->
<td>{{ items.name }}</td>
<!-- toFixed(num)将一个数值转为小数点后多少为的小数值 -->
<td><small>¥</small>{{ items.price.toFixed(2) }}</td>
<td>
<!-- 给减号按钮加click事件,点击后数量-1,并给disabled加一个条件判断,如果小于等于1减号失效 -->
<button @click="items.count--" :disabled="items.count <= 1">-</button>
<!-- 数量 -->
<span>{{ items.count }}</span>
<!-- 给加号按钮加click事件,点击后数量+1,并给disabled加一个条件判断,如果大于等于10加号失效 -->
<button @click="items.count++" :disabled="items.count >= 10">+</button>
</td>
<td>
<!-- 将a标签原有事件删除,并定义一个点击事件,点击删除某项 -->
<a href="" @click.prevent.stop="del(index)">删除</a>
</td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="3">总价</td>
<!-- 总价 -->
<td colspan="3"><small>¥</small>{{ sum }}</td>
</tr>
</tfoot>
</table>
</div>
</template>
<script>
export default {
data() {
return {
// 初始默认books的数组
books: [
{ id: 1, check: true, name: "《细说 PHP》", price: 10, count: 1 },
{ id: 2, check: true, name: "《细说网页制作》", price: 10, count: 1 },
{ id: 3, check: true, name: "《细说 JavaScript 语言》", price: 10, count: 1 },
{ id: 4, check: true, name: "《细说 DOM 和 BOM》", price: 10, count: 1 },
{ id: 5, check: true, name: "《细说 Ajax 与 jQuery》", price: 10, count: 1 },
{ id: 6, check: true, name: "《细说 HTML5 高级 API》", price: 10, count: 1 },
],
disabled: true,
};
},
computed: {
// 求和运算
sum() {
let total = 0;
for (let i = 0; i < this.books.length; i++) {
// 判断是否选中,选中的才被计算
if (this.books[i].check) {
// 循环累加
total += this.books[i].price * this.books[i].count;
}
}
// 返回总数
return total;
},
},
methods: {
// 删除方法,传入index索引参数
del(index) {
// 找到索引位置,删除一位
this.books.splice(index, 1);
},
},
};
</script>
<style lang="scss">
table {
border-collapse: collapse;
}
th,
td {
border: 1px solid;
min-width: 30px;
padding: 6px;
text-align: center;
}
span {
padding: 4px;
}
</style>