前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一文快速上手Vue之计算属性和侦听器,过滤器

一文快速上手Vue之计算属性和侦听器,过滤器

作者头像
一个风轻云淡
发布2022-11-15 16:54:41
3450
发布2022-11-15 16:54:41
举报
文章被收录于专栏:java学习java

计算属性和侦听器

1、计算属性(computed)

某些结果是基于之前数据实时计算出来的,我们可以利用计算属性。来完成

示例:

代码语言:javascript
复制
<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>
</ul>
</div>
<script src="../node_modules/vue/dist/vue.js"></script>
<script type="text/javascript">

let app = new Vue({

el: "#app",

data: {

xyjPrice: 56.73,

shzPrice: 47.98,

xyjNum: 1,

shzNum: 1

},

computed: {

totalPrice(){

return this.xyjPrice*this.xyjNum + this.shzPrice*th
is.shzNum;
}
},
})

</script>

效果:只要依赖的属性发生变化,就会重新计算这个属性 

2、侦听(watch)  

watch 可以让我们监控一个值的变化。从而做出相应的反应。 示例:

代码语言:javascript
复制
<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="../node_modules/vue/dist/vue.js"></script>
<script type="text/javascript">

let app = new Vue({

el: "#app",

data: {

xyjPrice: 56.73,

shzPrice: 47.98,

xyjNum: 1,

shzNum: 1,

msg:""

},

computed: {

totalPrice(){

return this.xyjPrice*this.xyjNum + this.shzPrice*th
is.shzNum;
}
},

watch: {

xyjNum(newVal, oldVal){

if(newVal >= 3){

this.msg = "西游记没有更多库存了";

this.xyjNum = 3;
}else{

this.msg = "";
}
}
}
})

</script>

3、过滤器(filters) 

过滤器不改变真正的`data`,而只是改变渲染的结果,并返回过滤后的版本。在很多不同的 情况下,过滤器都是有用的,比如尽可能保持 API 响应的干净,并在前端处理数据的格式。

示例:展示用户列表性别显示男女

代码语言:javascript
复制
<body>
<div id="app">
<table>
<tr v-for="user in userList">
<td>{{user.id}}</td>
<td>{{user.name}}</td>

<!-- 使用代码块实现,有代码侵入 -->

<td>{{user.gender===1? "男":"女"}}</td>
</tr>
</table>
</div>
</body>
<script src="../node_modules/vue/dist/vue.js"></script>
<script>

let app = new Vue({

el: "#app",

data: {

userList: [
{ id: 1, name: 'jacky', gender: 1 },
{ id: 2, name: 'peter', gender: 0 }
]
}
});

</script>

1、局部过滤器 

注册在当前 vue 实例中,只有当前实例能用

代码语言:javascript
复制
let app = new Vue({

el: "#app",

data: {

userList: [
{ id: 1, name: 'jacky', gender: 1 },
{ id: 2, name: 'peter', gender: 0 }
]
},

// filters 定义局部过滤器,只可以在当前 vue 实例中使用

filters: {

genderFilter(gender) {

return gender === 1 ? '男~' : '女~'

}
}
});

2、全局过滤器  

代码语言:javascript
复制
// 在创建 Vue 实例之前全局定义过滤器:

Vue.filter('capitalize', function (value) {

return value.charAt(0).toUpperCase() + value.slice(1)
})

任何 vue 实例都可以使用: td>{{user.name | capitalize}}td>

过滤器常用来处理文本格式化的操作。过滤器可以用在两个地方:双花括号插值和 v-bind

表达式

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 计算属性和侦听器
    • 1、计算属性(computed)
      • 2、侦听(watch)  
        • 3、过滤器(filters) 
          • 1、局部过滤器 
          • 2、全局过滤器  
      相关产品与服务
      流计算 Oceanus
      流计算 Oceanus 是大数据产品生态体系的实时化分析利器,是基于 Apache Flink 构建的企业级实时大数据分析平台,具备一站开发、无缝连接、亚秒延时、低廉成本、安全稳定等特点。流计算 Oceanus 以实现企业数据价值最大化为目标,加速企业实时化数字化的建设进程。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档