vue中computed与watch的使用

1、事件函数
vue中使用事件指令定义事件,@事件名="执行事件的函数";或者@事件名="执行事件的函数(参数)";
在vue实例中事件函数是写在methods中的,如methods:{ 事件函数名(参数){ //函数体 }}
注意:methods是与el和data同级的属性。

看看示例:
页面一开始打开先显示原始数据,三个按钮"全部"或"男"或"女"按钮后,筛选对应的数据显示到页面。

 <style>
      #btnAll button{
   
          width: 50px;
          background-color: lightblue;
      }
      .addColor{
   
          background-color: red;
      }
      #list li{
   
          list-style-type: decimal;
      }
 </style>
 <div id="app">
     <div id="btnAll">
         <!-- 判断用户点击的gender属性值是谁,哪个为true,哪个按钮就变色 -->
         <button :class="{addColor:gender===''}" @click="getUsers('')">全部</button>
         <button :class="{addColor:gender===''}" @click="getUsers('')"></button>
         <button :class="{addColor:gender===''}" @click="getUsers('')"></button>
     </div> 
     <hr>
     <ul id="list">
         -<!--<li v-for="user of users">-->
         <li v-for="user of showUsers">
            {
  {user.username}}
         </li>
     </ul>
 </div>
    <script src="js/vue.js"></script>
    <script>
         // 我们来准备一些数据(实际应用中,数据是从数据库中获取的),这里自己手写的数据是用来测试的
         let users = [
             {
   id:1,username:"Tom",gender:"男"},
             {
   id:2,username:"Marry",gender:"女"},
             {
   id:3,username:"Lucy",gender:"女"},
             {
   id:4,username:"Jone",gender:"男"},
             {
   id:5,username:"Jike",gender:"男"},
             {
   id:6,username:"Lulu",gender:"女"},
             {
   id:7,username:"Sara",gender:"女"}
         ];
         // 实例化vue对象
         let app = new Vue({
   
             el:"#app",
             data:{
   
                // users中存原数据
                users,
                // showUsers中存放在原数据上处理后得到的数据(计算属性)
                // 页面一打开显示原始数据,当点击三个不同的按钮时,再在原数据的基础上筛选符合条件的数据
                showUsers:users,
                // 判断gender的值
                gender:""
             },
             methods:{
   
                 getUsers(gender){
   
                     // 传入gender属性值
                     this.gender = gender;
                     // 这样直接在原数据上操作,会改变原数据的值,比如用户点击"男"按钮后,
                     // 再点"女"按钮后,只是在上一次筛选后的结果中再次筛选,
                     // 即在user的gender为"男"的数据中,去筛选gender为"女"的数据,肯定获取不到了。
                     //  if (gender==="") {
   
                     //     this.users = users;
                     //  }
                     //  else{ 
                     //     this.users = this.users.filter(user=>user.gender===gender);
                     //  }
                     
                     // 这样先把数据再复制一份存到showUsers中,不会修改原数据,
                     // 把每次操作的结果存到showUsers中,不会出现如上的问题了
                     if (gender==="") {
   // 当gender为空时,即点击了"全部"按钮时,返回原数据
                        this.showUsers = this.users;
                     }
                     else{
    // 点击"男"或"女"按钮时,在原数据上经过筛选后再返回新数据
                        this.showUsers = this.users.filter(user=>user.gender==&#
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值