vue模板语法上集->插值,指令,过滤器,计算属性&监听属性,vue购物车

简介: vue模板语法上集->插值,指令,过滤器,计算属性&监听属性,vue购物车
  • 插值
  • 指令
  • 过滤器
  • 计算属性&监听属性
  • vue购物车

1.插值

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
    <title>插值</title>
    <style type="text/css">
      .f30{
        font-size: 30px;
      }
    </style>
  </head>
  <body>
    <div id="app">
      <p>文本</p>
      {{msg}}
      <p>html解析</p>
      <p>字体颜色变黄</p>
      <b v-html="msg2"></b>
      <p>字体变黄变大</p>
      <b :class="msg3" v-html="msg2"></b>
      <p>表达式</p>
      {{num+1}}<br />
      {{warn.substr(0,2)}}<br />
      <input v-model="ok"/>
      {{ok==1?'被抓了':'有内鬼'}}
    </div>
    <script type="text/javascript">
      new Vue({
        el:'#app',
        data(){
          return{
            msg:'hello 小兵',
            msg2:'<span style="color:yellow">hello 小兵</span>',
            msg3:'f30',
            num:6,
            warn:'条子来了',
            ok:1
          };
        }
      });
    </script>
  </body>
</html>

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
    <title>指令</title>
  </head>
  <body>
    <div id="app">
      <p>v-if/v-else-if/v-else</p>
      <input v-model="score"/><br />
      <b v-if="score<60">不及格</b>
      <b v-else-if="score>=60 && score<70">及格</b>
      <b v-else-if="score>=70 && score<80">一般</b>
      <b v-else-if="score>=80 && score<90">良好</b>
      <b v-else="">优秀</b>
      60以下 不及格
      60-70 及格
      70-80 一般
      80-90 良好
      90-100 优秀
      <p>v-show</p>
      v-if与v-show的区别<br />
      <b v-if="isShow">展示</b>
      <b v-show="isShow">展示</b>
      <p>v-for</p>
      <i v-for="a in arr">{{a}}&nbsp;&nbsp;</i>
      <i v-for="i,u in users">&nbsp;&nbsp;{{i}}</i>
      <select>
        <option v-for="h in hobby" :value="h.id">{{h.name}}</option>
      </select>
      <div id="" v-for="h in hobby"     >
        <input type="checkbox" name="hobby"  :value="h.id" />{{h.name}}
      </div>
    </div>
    <script type="text/javascript">
      new Vue({
        el:'#app',
        data(){
          return{
            score:34,
            isShow:false,
            arr:[1,2,3,4],
            users:[{
              name:'ab',id:1
            },{
              name:'ac',id:2
            },{
              name:'ad',id:3
            },{
              name:'ae',id:4
            }],
            hobby:[{
              name:'保健',id:1
            },{
              name:'理发',id:2
            },{
              name:'洗头',id:3
            },{
              name:'养生',id:4
            }]
          };
        }
      });
    </script>
  </body>
</html>

3.过滤器

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
    <script src="date.js" type="text/javascript" charset="utf-8"></script>
    <title>过滤</title>
  </head>
  <body>
    <div id="app">
      <p>局部过滤器基本应用</p>
      {{msg}}<br />
      {{msg | filterA}}
      <p>局部过滤器串行使用</p>
      {{msg}}<br />
      {{msg | filterA | filterB}}
      <p>局部过滤器传参</p>
      {{msg | filterC(3,10)}}<br />
      <p>全局过滤器</p>
      {{time}}<br />
      {{time | fmtDateFilter}}
    </div>
    <script type="text/javascript">
      Vue.filter('fmtDateFilter',function(value){
        return fmtDate(value);
      });
      new Vue({
        el:'#app',
        filters:{
                   'filterA':function(v){
             return v.substring(0,6);
           },
           'filterB':function(v){
               return v.substring(2,5);
            },
           'filterC':function(v,begin,end){
               return v.substring(begin,end);
            }
        },
        data(){
          return{
            msg:'小猪同学,你的好基友被抓了',
            time:new Date()
          };
        }
        ,methods:{
          test(){
            // 单击事件,双击事件
            alert('点我试试!!');
          }
        }
      });
    </script>
  </body>
</html>

4.计算属性&监听属性

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
    <title>计算属性监听属性</title>
    </style>
  </head>
  <body>
    <div id="app">
      <p>计算属性</p>
      单价:<input v-model="price"/>
      数量:<input v-model="num"/>
      小计:{{count}}
      <p>监听属性</p>
      千米:<input v-model="km"/><br />
      米:<input v-model="m"/><br />
    </div>
    <script type="text/javascript">
      new Vue({
        el:'#app',
        data(){
          return{
            price:78,
            num:1,
            km:1,
            m:1000
          };
        },
        computed:{
          count:function(){
            return this.price * this.num;
          }
        },
        watch:{
          km:function(v){
            // v指的是被监听的属性,是km
            this.m=parseInt(v) * 1000;
          },
          m:function(v){
            // v指的是被监听的属性,是m
            this.km=parseInt(v) / 1000;
          }
        }
      });
    </script>
  </body>
</html>

5.vue购物车

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
    <title>vue购物车</title>
  </head>
  <body>
    <div id="app">
      <div v-if="cart.length==0">
        <p>购物车为空</p>
      </div>
      <!-- //st实体,xb下标 -->
      <div v-else v-for="st,xb in cart" :key="xb">
        <p>名称:{{st.name}}</p>       
        <p>价格:{{st.price}}</p>
        <p>数量:{{st.num}}</p>
        <p>单价:{{st.price * st.num}}</p>
        <button @click="increaseQuantity(xb)">+</button>
        {{st.num}}
          <button @click="decreaseQuantity(xb)">-</button>
        <button @click="removeFramCart(xb)">移除</button>
      </div>
    </div>
    <script type="text/javascript">
      new Vue({
        el:'#app',
        data(){
          return{
            cart:[
              {id:1,name:'香蕉',price:10,num:1},
              {id:2,name:'橘子',price:20,num:1},
              {id:3,name:'西瓜',price:16,num:1},
            ],
          };
        },
        methods:{
          removeFramCart(xb){
              this.cart.splice(xb,1); 
          },
          increaseQuantity(xb) {
              this.cart[xb].num++;
          },
          decreaseQuantity(xb){
            if(this.cart[xb].num > 1){
              this.cart[xb].num--;
            }else{
              removeFramCart(xb);
            }
          },
        },
      });
    </script>
  </body>
</html>

目录
相关文章
|
8月前
|
人工智能 JavaScript 算法
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
947 0
|
11月前
|
存储 数据采集 供应链
属性描述符初探——Vue实现数据劫持的基础
属性描述符还有很多内容可以挖掘,比如defineProperty与Proxy的区别,比如vue2与vue3实现数据劫持的方式有什么不同,实现效果有哪些差异等,这篇博文只是入门,以后有时间再深挖。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
存储 缓存 JavaScript
如何在大型 Vue 应用中有效地管理计算属性和侦听器
在大型 Vue 应用中,合理管理计算属性和侦听器是优化性能和维护性的关键。本文介绍了如何通过模块化、状态管理和避免冗余计算等方法,有效提升应用的响应性和可维护性。
|
分布式计算 JavaScript 前端开发
vue学习第8章(vue的购物车案例)
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。自学前端2年半,正向全栈进发。本篇分享一个综合练习小demo,包括目录结构、HTML、JS及CSS代码,通过增删商品实现总价计算。关注我,获取更多前端知识!🎉🎉🎉
165 1
|
JavaScript 前端开发
vue通过监听实现相同路径的视图重新加载
最近在做一个项目,前端菜单路径如下: { path: '/oa/workflow/process/:status', component: sys_workflow_process, ...
1380 0
|
5月前
|
JavaScript
Vue中如何实现兄弟组件之间的通信
在Vue中,兄弟组件可通过父组件中转、事件总线、Vuex/Pinia或provide/inject实现通信。小型项目推荐父组件中转或事件总线,大型项目建议使用Pinia等状态管理工具,确保数据流清晰可控,避免内存泄漏。
487 2
|
4月前
|
缓存 JavaScript
vue中的keep-alive问题(2)
vue中的keep-alive问题(2)
410 137
|
8月前
|
JavaScript UED
用组件懒加载优化Vue应用性能
用组件懒加载优化Vue应用性能
|
9月前
|
JavaScript 数据可视化 前端开发
基于 Vue 与 D3 的可拖拽拓扑图技术方案及应用案例解析
本文介绍了基于Vue和D3实现可拖拽拓扑图的技术方案与应用实例。通过Vue构建用户界面和交互逻辑,结合D3强大的数据可视化能力,实现了力导向布局、节点拖拽、交互事件等功能。文章详细讲解了数据模型设计、拖拽功能实现、组件封装及高级扩展(如节点类型定制、连接样式优化等),并提供了性能优化方案以应对大数据量场景。最终,展示了基础网络拓扑、实时更新拓扑等应用实例,为开发者提供了一套完整的实现思路和实践经验。
1201 78
|
7月前
|
人工智能 JSON JavaScript
VTJ.PRO 首发 MasterGo 设计智能识别引擎,秒级生成 Vue 代码
VTJ.PRO发布「AI MasterGo设计稿识别引擎」,成为全球首个支持解析MasterGo原生JSON文件并自动生成Vue组件的AI工具。通过双引擎架构,实现设计到代码全流程自动化,效率提升300%,助力企业降本增效,引领“设计即生产”新时代。
557 1