古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。这篇文章主要讲述谷粒商城学习日记(20)——Vue语法入门相关的知识,希望能为你提供帮助。
Vue语法入门
- 计算属性和侦听器
- 过滤器
- 自定义组件
可参考文档
vue官方api
计算属性和侦听器 格式
Vue对象里面声明
computed: 计算属性
watch: 侦听器
new Vue(
el: "#app",
data: ,
computed: ,
watch: )
<
/script>
示例
<
!DOCTYPE html>
<
html lang="en">
<
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>
<
/head>
<
body>
<
div id="app">
<
!-- 某些结果是基于之前数据实时计算出来的,我们可以利用计算属性。来完成 -->
<
ul>
<
li>
西游记; 价格:xyjPrice,数量:<
input type="number" v-model="xyjNum">
<
/li>
<
li>
水浒传; 价格:shzPrice,数量:<
input type="number" v-model="shzNum">
<
/li>
<
li>
总价:totalPrice<
/li>
msg
<
/ul>
<
/div>
<
script src="https://www.songbingjia.com/node_modules/vue/dist/vue.js">
<
/script>
<
script>
//watch可以让我们监控一个值的变化。从而做出相应的反应。
new Vue(
el: "#app",
data:
xyjPrice: 99.98,
shzPrice: 98.00,
xyjNum: 1,
shzNum: 1,
msg: ""
,
computed:
totalPrice()
return this.xyjPrice*this.xyjNum + this.shzPrice*this.shzNum,
watch:
xyjNum(newVal,oldVal)
if(newVal>
=3)
this.msg = "库存超出限制";
this.xyjNum = 3
else
this.msg = "";
,
)
<
/script>
<
/body>
<
/html>
过滤器 过滤器常用来处理文本格式化的操作。过滤器可以用在两个地方:双花括号插值和 v-bind 表达式
可以使用局部定义的方式和全局定义的方式使用
局部使用方式
引用方式
值 | 过滤器名
<
/script>
let vm = new Vue(
el: "#app",
data:
,
filters:
//filters 定义局部过滤器,只可以在当前vue实例中使用)
<
/script>
全局使用方式
<
script>
Vue.filter("gFilter", function (val)
)
<
/script>
示例
<
!DOCTYPE html>
<
html lang="en">
<
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>
<
/head>
<
body>
<
!-- 过滤器常用来处理文本格式化的操作。过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 -->
<
div id="app">
<
ul>
<
li v-for="user in userList">
user.id ==>
user.name ==>
user.gender == 1?"男":"女" ==>
user.gender | genderFilter ==>
user.gender | gFilter
<
/li>
<
/ul>
<
/div>
<
script src="https://www.songbingjia.com/node_modules/vue/dist/vue.js">
<
/script>
<
script>
Vue.filter("gFilter", function (val)
if (val == 1)
return "男~~~";
else
return "女~~~";
)let vm = new Vue(
el: "#app",
data:
userList: [
id: 1, name: jacky, gender: 1 ,
id: 2, name: peter, gender: 0
]
,
filters:
//filters 定义局部过滤器,只可以在当前vue实例中使用
genderFilter(val)
if (val == 1)
return "男";
else
return "女";
)
<
/script>
<
/body>
<
/html>
自定义组件 在大型应用开发的时候,页面可以划分成很多部分。往往不同的页面,也会有相同的部分。
例如可能会有相同的头部导航。
但是如果每个页面都自开发,这无疑增加了我们开发的成本。所以我们会把页面的不同分拆分成立的组件,然后在不同页面就可以共享这些组件,避免重复开发。
在vue里,所有的vue实例都是组件
【谷粒商城学习日记(20)——Vue语法入门】组件其实也是一个vue实例,因此它在定义时也会接收:data、methods、生命周期函等
不同的是组件不会与页面的元素绑定(所以不写el),否则就无法复用了,因此没有el属性。
但是组件渲染需要html模板,所以增加了template属性,值就是HTML模板
全局组件定义完毕,任何vue实例都可以直接在HTML中通过组件名称来使用组件了
data必须是一个函数,不再是一个对象。
<
!DOCTYPE html>
<
html lang="en">
<
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>
<
/head>
<
body>
<
div id="app">
<
!-- 每个对象都是独立统计的 -->
<
counter>
<
/counter>
<
counter>
<
/counter>
<
button-counter>
<
/button-counter>
<
/div>
<
script src="https://www.songbingjia.com/node_modules/vue/dist/vue.js">
<
/script>
<
script>
//1、全局声明注册一个组件 // counter标签,代表button
Vue.component("counter",
template: `<
button v-on:click="me()">
我被点击了 count 次<
/button>
`,
data()
return
count: 1 // 数据,
methods:
me()
this.count ++;
);
//2、局部声明一个组件
const buttonCounter =
template: `<
button v-on:click="count++">
我被点击了 count 次~~~<
/button>
`,
data()
return
count: 1;
new Vue(
el: "#app",
data:
count: 1
,
components:// 要用的组件
button-counter: buttonCounter)
<
/script>
<
/body>
<
/html>
推荐阅读
- 带你认识FusionInsight Flink(既能批处理,又能流处理)
- YYDS|不得不看的Spark内存管理机制
- Spring 专场「IOC 容器」不看源码就带你认识核心流程以及运作原理
- docker 命令及问题
- 2万字聊聊什么是秒杀系统(上)
- 树莓派4B基于docker搭建devops平台
- K8S(十三)探针
- 跟着动画学习 GO 数据结构之 Go 链表
- 如何彻底删除EKS中一直卡在Terminating的Namespace