zoukankan      html  css  js  c++  java
  • Vue模板语法(一)

    Vue模板语法

    一.插值

    1.1.1 文本
    {{msg}}
    1.1.2 html
    使用v-html指令用于输出html代码
    1.1.3 属性
    HTML属性中的值应使用v-bind指令
    1.1.4 表达式
    Vue提供了完全的JavaScript表达式支持
    {{str.substr(0,6).toUpperCase()}}
    {{ number + 1 }}
    {{ ok ? 'YES' : 'NO' }}
    <li v-bind:id="'list-' + id">我的Id是js动态生成的</li>

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="utf-8">
     5         <title>vue插值</title>
     6         <script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
     7             </head>
     8             <body>
     9                 <div id="app">
    10                     <ul>
    11                         
    12                         <li>
    13                             <h3>文本</h3>
    14                                {{msg}}
    15                         </li>
    16                         <li>
    17                             <h3>Html字符串渲染</h3>
    18                              <div v-html="htmlSter"></div>
    19                         </li>
    20                         <li>
    21                             <h3>v-bind属性绑定</h3>
    22                              <input type="text" value="18" />
    23                              <input type="text" v-bind:value="age" />
    24                         </li>
    25                         <li>
    26                             <h3>表达式</h3>
    27                                {{str.substr(0,6).toUpperCase()}}
    28                                        {{ number + 1 }}
    29                                        {{ ok ? 'YES' : 'NO' }}
    30                                        <li v-bind:id="'list-' + id">我的Id是js动态生成的</li>
    31                         </li>
    32                     </ul>
    33                 </div>        
    34             </body>
    35             <script type="text/javascript">            
    36                 new Vue({
    37                     el:'#app',
    38                     data:{
    39                         msg:'Hollo Vue!!!',
    40                         htmlSter:'<span style="color: red;">Html字符串渲染</span>',
    41                         age:20,
    42                         str:'https://www.baidu.com',
    43                         number:6,
    44                         ok:true,
    45                         id:16
    46                     }
    47                 })        
    48             </script>
    49         </html>
    50         

    二.指令

     指的是带有“v-”前缀的特殊属性

    1.2.1 核心指令
    (v-if|v-else|v-else-if)/v-show/v-for/v-bind/v-on/v-model/v-if|v-else|v-else-if:根据其后表达式的bool值进行判断是否渲染该元素他们只能是兄弟元素

    v-else-if上一个兄弟元素必须是v-if
    v-else上一个兄弟元素必须是v-if或者是v-else-if

    v-show:与v-if类似,只是会渲染其身后表达式为false的元素,而且会给这样的元素添加css代码:style="display:none"

    v-for:类似JS的遍历,
    遍历数组: v-for="item in items", items是数组,item为数组中的数组元素
    遍历对象: v-for="(value,key,index) in stu", value属性值,key属性名,index下标

    v-bind
    v-on
    v-model:用来在 input、select、textarea、checkbox、radio 等表单控件元素上创建双向数据绑定,根据表单上的值,自动更新绑定的元素的值
    v-for/v-model一起绑定[多选]复选框和单选框

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="utf-8">
     5         <title>vue指令</title>
     6         <script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
     7             </head>
     8             <body>
     9                 <div id="app">
    10                     <ul>                    
    11                         <li>
    12                             <h3>分支</h3>
    13                             <div v-if="score > 90">A</div>
    14                             <div v-else-if="score > 70">B</div>
    15                             <div v-else-if="score > 60">C</div>
    16                             <div v-else-if="score < 50">D</div>
    17                             <div v-else=" "></div>
    18                                <input type="text" v-model="score" />
    19                         </li>
    20                         <!-- 分清楚v-fi跟v-show的区别 -->
    21                         <!-- v-if:控制的是标签是否打印 
    22                              v-show:控制的是标签的样式
    23                         -->                        
    24                         <li>
    25                             <h3>v-show指令</h3>
    26                             <div v-show="flag">hollo</div>
    27                             <div v-if="flag">hollo !!!</div>
    28                         </li>
    29                         <li>
    30                             <h3>v-for指令</h3>
    31                             <div v-for="item,index in data1">
    32                                 {{item}}~{{index}}<br />                                                                                
    33                             </div>
    34                             <hr />
    35                             <div v-for="item,index in data2">
    36                                 {{item.id}}~{{item.name}}~{{index}}<br />                                                                                
    37                             </div>
    38                         </li>
    39                         <li>
    40                             <h3>动态参数</h3>
    41                             <button v-on:[evname]="xxx">动态参数</button>
    42                             <input type="text" v-model="evname" />
    43                         </li>
    44                     </ul>
    45                 </div>        
    46             </body>
    47             <script type="text/javascript">            
    48                 new Vue({
    49                     el:'#app',
    50                     data:{
    51                         score:88,
    52                         flag:false,
    53                         data1:[1,3,6,9,11],
    54                         data2:[{
    55                             id:1,
    56                             name:'!!!'
    57                             },
    58                             {
    59                                 id:2,
    60                                 name:'......'
    61                                 },
    62                                 {
    63                                     id:3,
    64                                     name:'。。。'
    65                                     }
    66                             ],
    67                             evname:'click'
    68                         
    69                     },
    70                     methods:{
    71                         xxx(){
    72                             console.log('方法被调用!!!')
    73                         }
    74                     }
    75                 })        
    76             </script>
    77         </html>
    78         

    三. 过滤器

    全局过滤器
    Vue.filter('filterName', function (value) {
    // value 表示要过滤的内容
    });
    局部过滤器
    new Vue({
    filters:{'filterName':function(value){}}
    });

    vue允许你自定义过滤器,被用作一些常见的文本格式化,格式如下:
    <!-- 在两个大括号中 -->
    {{ name | capitalize }}

    <!-- 在 v-bind 指令中 -->
    <div v-bind:id="rawId | formatId"></div>
    注1:过滤器函数接受表达式的值作为第一个参数
    注2:过滤器可以串联
    {{ message | filterA | filterB }}
    注3:过滤器是JavaScript函数,因此可以接受参数:
    {{ message | filterA('arg1', arg2) }}

    注4:js定义一个类
    function Stu(){};
    Stu.prototype.add(a,b){};//添加一个新的实例方法
    Stu.update(a,b){};//添加一个新的类方法

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="utf-8">
     5         <title>vue过滤器</title>
     6         <script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
     7             </head>
     8             <body>
     9                 <div id="app">
    10                     <ul>                    
    11                         <li>
    12                             <h3>局部过滤器注册</h3>
    13                             {{msg}}<br />
    14                             {{msg | a}}<br />
    15                             {{javax1 | a}}<br />
    16                         </li>
    17                         <li>
    18                             <h3>局部过滤器串联</h3>
    19                             {{javax1 | a | b}}
    20                         </li>
    21                         <li>
    22                             <h3>全局过滤器注册</h3>
    23                             {{javax1 | c}}
    24                         </li>
    25                         
    26                     </ul>
    27                 </div>        
    28             </body>
    29             <script type="text/javascript">    
    30                     Vue.filter(
    31                     'c',function(v){
    32                         console.log(v);
    33                             return v.substring(10,16);
    34                     }
    35                     ),
    36                 new Vue({
    37                     el:'#app',
    38                     data:{
    39                     msg:'https://www.baidu.com',
    40                     javax1:'https://www.javax1.com'
    41                     },
    42                     filters:{
    43                         'a':function(v){
    44                         console.log(v);
    45                             return v.substring(0,16);
    46                         },
    47                         'b':function(v){
    48                         console.log(v);
    49                             return v.substring(5,10);
    50                         }
    51                     }
    52                 })        
    53             </script>
    54         </html>
    55         

    四.计算机属性与监听属性

    4. 计算属性
    计算属性可用于快速计算视图(View)中显示的属性。这些计算将被缓存,并且只在需要时更新
    computed:{}

    5. 监听属性
    监听属性 watch,我们可以通过 watch 来响应数据的变化
    watch:{}

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="utf-8">
     5         <title>Vue计算监听</title>
     6         <script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
     7     </head>
     8     <body>
     9         <div id="app">
    10             <ul>
    11                 <li>
    12                     <h3>计算属性</h3>
    13                     单价:<input v-model="price" />
    14                     数量:<input v-model="num" />
    15                     总价: {{total}}
    16                 </li>
    17                 <li>
    18                     <h3>监听属性</h3>
    19                     km:<input v-model="km"/>
    20                     m:<input v-model="m" />
    21                 </li>
    22             </ul>
    23         </div>        
    24     </body>
    25     <script type="text/javascript">
    26         new Vue({
    27             el:'#app',
    28             data:{
    29                 price:15,
    30                 num:1,
    31                 km:1,
    32                 m:1000
    33             },
    34             computed:{
    35                 total(){
    36                     return parseInt(this.price) * parseInt(this.num);
    37                 }
    38             },
    39             watch:{
    40                 km(v){
    41                     this.m = v * 1000;
    42                 },
    43                 m(v){
    44                     this.km = v/1000;
    45                 }
    46             }
    47         })        
    48     </script>
    49 </html>

  • 相关阅读:
    EasyNVR RTSP转RTMP-HLS流媒体服务器前端构建之_关于接口调用常见的一些问题(401 Unauthorized)
    EasyNVR H5直播流媒体解决方案前端构建之:如何播放自动适配RTMP/HLS直播播放
    EasyNVR RTSP摄像机转HLS直播服务器中使用Onvif协议控制预置位
    EasyNVR RTSP摄像机HLS直播服务器中使用Onvif协议获取设备快照
    EasyNVR无插件直播服务器如何使用ffmpeg实现摄像机快照功能的
    EasyNVR流媒体服务器接入EasyDSS云视频平台快照上传实现
    EasyDSS RTMP流媒体服务器的HTTP接口query url的C++实现方法
    EasyDSS高性能流媒体服务器前端重构(五)- webpack + vue-router 开发单页面前端实现按需加载
    EasyDSS高性能流媒体服务器前端重构(六)- webpack-dev-server 支持手机端访问
    EasyNVR RTSP转HLS(m3u8+ts)流媒体服务器前端构建之:bootstrap-datepicker日历插件的实时动态展现
  • 原文地址:https://www.cnblogs.com/xcn123/p/11378959.html
Copyright © 2011-2022 走看看