vue模板语法上

一、插值

1、文本{{msg}}

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
    </head>
    <body>
        <!-- 定义边界 -->
        <div id="app">
            <h3>{{msg}}</h3>
        </div>
    </body>
    
    <script type="text/javascript">
        <!-- 绑定边界 -->
        new Vue({
            el:'#app',
            data() {
                return {msg:'vue你大爷'};
            }
        })
    </script>
</html>

2、html

使用v-html指令用于输出html代码

<!DOCTYPE html>

<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
    </head>
    <body>
        <!-- 定义边界 -->
        <div id="app">
            <p>文本</p>
            <h3>{{msg}}</h3>
            <p>html串,显示带红色字体的内容</p>
            <div v-html="htmlstr"></div>
        </div>
    </body>

    <script type="text/javascript">
        <!-- 绑定边界 
        -->
        new Vue({
            el: '#app',
            data(){
                return{
                    msg: vue你大爷',
                    htmlstr:'<h3 style="color:red;">这是一个html片段</h3>',
            };
        }
        })
    </script>
</html>

 3、属性

HTML属性中的值应该使用v-bind指令

所有原生态的属性要利用vue的变量,都需要在对应的属性前加v-bind

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
    </head>
    <body>
        <!-- 定义边界 -->
        <div id="app">
        <p>文本</p>
            <h3>{{msg}}</h3>
        <p>html串,显示带红色字体的内容</p>
            <div v-html="htmlstr"></div>
        <p>vue中的属性</p>
            <a v-bind:href="hrefstr">百度</a>
            <input v-bind:value="valuestr" />

            <!-- 缩写方式 -->
            <!-- <input :value="valuestr" /> -->
        </div>
    </body>

    <script type="text/javascript">
        <!-- 绑定边界 
        -->
        new Vue({
            el: '#app',
            data(){
                return{
                    msg: '欢迎幻影',
                    htmlstr:'<h3 style="color:red;">这是一个html片段</h3>',
                    hrefstr:'http://www.baidu.com',
                    valuestr:"6666"
            };
        }
        })
    </script>
</html>

 

4、表达式

 Vue提供了完全的JavaScript表达式支持

 {{str.substr(0,6).toUpperCase()}}

 {{ number + 1 }}

 {{ ok ? 'YES' : 'NO' }}

 <li v-bind:id="'list-' + id">我的Id是js动态生成的</li>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
    </head>
    <body>
        <!-- 定义边界 -->
        <div id="app">
        <p>文本</p>
            <h3>{{msg}}</h3>
        <p>html串,显示带红色字体的内容</p>
            <div v-html="htmlstr"></div>
        <p>vue中的属性</p>
            <a v-bind:href="hrefstr">百度</a>
            <input v-bind:value="valuestr" />
            <!-- v-bind:value缩写方式 -->
            <!-- <input :value="valuestr" /> -->
        <p>表达式</p>
            <p>截取字符串并转大写</p>
            {{str.substring(0,4).toUpperCase()}}
            <p>数值相加</p>
            张三:{{number+1}}
            <p>判断</p>
            {{ok ? 'yes':'no'}}
            <p>动态生成id</p>
            <span :id="'goodsid_id_'+id">goodmorning</span>
        </div>
    </body>

    <script type="text/javascript">
        <!-- 绑定边界 
        -->
        new Vue({
            el: '#app',
            data(){
                return{
                    msg: '欢迎雷臭屁',
                    htmlstr:'<h3 style="color:red;">html片段</h3>',
                    hrefstr:'http://www.baidu.com',
                    valuestr:"6666",
                    str:'java is very good',
                    number:52,
                    ok:true,
                    id:02
            };
        }
        })
    </script>
</html>


 二、指令

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

1、核心指令

v-if   v-else   v-else-if:根据表达式的bool值进行判断是否渲染该元素

他们只能是兄弟元素

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

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

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
    </head>
    <body>
        <!-- 定义边界 -->
        <div id="app">
            <p> v-if|v-else|v-else-if</p>
                    分数:<input v-model="score" />
                    <div v-if="score>80">优秀</div>
                    <div v-else-if="score>60">良好</div>
                    <div v-else="score<60">继续加油</div>

        <p>v-show</p>
                <div v-show="score>90">v-show-上优秀学员名单</div>
                <div v-if="score>90">v-if-上优秀学员名单</div>
        </div>
    </body>
    
    <script type="text/javascript">
        <!-- 绑定边界 -->
        new Vue({
            el:'#app',
            data() {
                return {
                    score:61
                };
            }
        })
    </script>
</html>

用户输入款里输入的数字判断成绩优良差 

v-if连div代码都不存在了,v-show只是display隐藏住了

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

2、v-for

类似js代码

遍历数组:v-for="item in item",item是数组,item为数组中的元素

遍历对象:v-for="(value,key,index)in stu",value属性值,key属性名,index下标

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
    </head>
    <body>
        <!-- 定义边界 -->
        <div id="app">
          <p>v-for</p>    
               <select v-model="hobbySelected">
                    <option v-for="h in hobby" :value="h.id">{{h.name}}</option>
                </select>
                <input v-model="hobbySelected" />
        </div>
    </body>
    
    <script type="text/javascript">
        <!-- 绑定边界 -->
        new Vue({
            el:'#app',
            data() {
                return {
            hobby:[
                {id:"1",name:"吃饭饭"},
                {id:"2",name:"睡觉觉"},
                {id:"3",name:"打豆豆"}
            ],
                    hobbySelected:2
                };
            }
        })
    </script>
</html>

 复选框

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
    </head>
    <body>
        <!-- 定义边界 -->
        <div id="app">
           <p>v-for</p>    
                <div v-for="h in hobby">
                <input  :value="h.id" type=checkbox />{{h.name}}
                </div>
        </div>
    </body>
    
    <script type="text/javascript">
        <!-- 绑定边界 -->
        new Vue({
            el:'#app',
            data() {
                return {
                    score:78,
                    hobby:[
                        {id:"1",name:"唱歌"},
                        {id:"2",name:"跳舞"},
                        {id:"3",name:"打游戏"}
                    ],
                                 };
            }
        })
    </script>
</html>

 3、v-on

触发事件

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
    </head>
    <body>
        <!-- 定义边界 -->
        <div id="app">
            <p>v-if|v-else|v-else-if</p>
            分数: <input v-model="score" />
            <div v-if="score>80">优秀</div>
            <div v-else-if="score>60">良好</div>
            <div v-else="score<60">还需努力</div>
            
            <p>v-show</p>
            <div v-show="score>90">v-show:上优秀学员名单</div>
            <div v-if="score>90">v-if:上优秀学员名单</div>
            
            <p>v-for</p>
            <select v-model="hobbySelected">
                <option v-for="h in hobby" :value="h.id">{{h.name}}</option>
            </select>
            <div v-for="h in hobby">
            <input :value="h.id" type="checkbox" />{{h.name}}
            </div>
            <p>v-on</p>
            <button v-on:click="handle">触发事件</button>
            <button @click="handle">触发事件lxy</button>
            <!-- <input v-model="hobbySelected"/> -->
        </div>
        </body>
        <script type="text/javascript">
        <!-- 绑定边界 --> 
        new Vue({
            el:'#app',
            data(){
                return{
               //ctrl+k格式化
            score:78,
            hobby:[
                {id:"1",name:"吃饭饭"},
                {id:"2",name:"睡觉觉"},
                {id:"3",name:"打豆豆"}
            ],
            hobbySelected:3
              };
            },
            methods:{
                handle(){
                    alert("触发事件");
                }
            }
        })
        
        </script>
    
</html> 

 

四、过滤器

1、全局过滤器

Vue.filter('filterName', function (value) {
     // value 表示要过滤的内容
   });

2、局部过滤器

 new Vue({
     filters:{'filterName':function(value){}}
   });

3、串联

4、过滤器可以传参

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
    </head>
    <body>
        <!-- 定义边界 -->
        <div id="app">
            {{msg|all}},{{msg|single}},{{msg|all|single}},{{msg|param(4,5)}}
        </div>
    </body>
    
    <script type="text/javascript">
    //全局过滤器
        Vue.filter('all', function (value) {
             return value.substring(2,4);
           });
        <!-- 绑定边界 -->
        new Vue({
            el:'#app',
            data() {
                return {
                    msg:"开开心心,快快乐乐"
                };
            },
            // 局部过滤
            filters:{
                'single':function(val){
                    return val.substring(3,8);
                },
                'param':function(val,start,end){
                    return val.substring(start,end);
                }
            }
        })
    </script>
</html>

 

五、计算属性和监听属性

区别:

监听属性必须在变量中定义

计算属性是变量当方面影响另一方面,监听属性是互相影响

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
    </head>
    <body>
        <!-- 定义边界 -->
        <div id="app">
            <p>计算属性</p>
            <table border="1" style="width: 600px;height: 300px;">
                <tr>
                    <td>帽子</td>
                    <td>30</td>
                    <td>
                        <input v-model="maozi" />
                    </td>
                    <td>
                        {{maoziTotal}}
                    </td>
                </tr>
                <tr>
                    <td>衣服</td>
                    <td>68</td>
                    <td>
                        <input v-model="yifu" />
                    </td>
                    <td>
                        {{yifuTotal}}
                    </td>
                </tr>
                <tr>
                    <td>裤子</td>
                    <td>89</td>
                    <td>
                        <input v-model="kuzi" />
                    </td>
                    <td>
                        {{kuziTotal}}
                    </td>
                </tr>
                <tr>
                    <td>总价</td>
                    <td colspan="3">{{total}}</td>
                </tr>
            </table>
        <p>监听属性</p>
            千米:<input v-model="km" />
            米:<input v-model="m" />
        </div>
    </body>
    
    <script type="text/javascript">
           <!-- 绑定边界 -->
        new Vue({
            el:'#app',
            data() {
                return {
                    maozi:1,
                    yifu:1,
                    kuzi:1,
                    km:2,
                    m:2000
                };
            },
            methods:{
                handle(){
                    alert("触发事件");
                }
            },
            // 计算属性
             computed:{
                 maoziTotal(){
                     return this.maozi*30;
                 },
                 yifuTotal(){
                     return this.yifu*68;
                 },
                 kuziTotal(){
                      return this.kuzi*89;
                 },
                 total(){
                     return this.maoziTotal+this.yifuTotal+this.kuziTotal;
                 }
             },
             // 监听属性
             watch:{
                 // v指的是m变量
                 m(v){
                     this.km=parseInt(v)/1000
                 },
                 // v指的是km变量
                 km(v){
                     this.m=parseInt(v)*1000
                 }
             }
        })
    </script>
</html>

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

欣宇不会敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值