指令

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .active{
            background-color: aqua;
        }
        .red{
            color: #ff0707;
        }
    </style>
</head>
<body>
    <!--指令-->
    <div id="app">

    </div>

    <div class="fenge">-------------------------------</div>
    <!-- 插值表达式 {{}}
    支持表达式,但是不支持语句if,for,不能加到属性中
    -->
<div id="chazhi">
<p>{{ niger }}</p>
<p>{{ niger.toUpperCase() }}</p>
<p>{{ niger + ' say hello' }}</p>
<p>{{ age>=18? '成年':'未成年' }}</p>
<p>{{ age2>=18? '成年':'未成年' }}</p>
<p>{{ nigers.name }}</p>
<p>{{ nigers.do }}</p>
</div>
<div class="fenge">-------------------------------</div>

<!--v-html指令-->
<div id="v_html">
<div v-html="to"></div>
<div v-html="show"></div>
</div>
<div class="fenge">-------------------------------</div>

  <!--
    v-show指是控制display:none
    v-if就是控制该语句是否创建-->
  <div id="showIf">
    <div v-show="flag">show显示</div>
    <div v-if="flag2">if显示</div>
  </div>
  <div class="fenge">-------------------------------</div>



<!--v-if和v-else和v-else-if指令-->
<div id="xuanze">
<p v-if="sex==='男'"></p>
<p v-else="sex==='女'"></p>

<p v-if="grade>90">成绩为A</p>
<p v-else-if="grade>80">成绩为B</p>
<p v-else-if="grade>70">成绩为C</p>
<p v-else>成绩为D</p>
</div>
<div class="fenge">-------------------------------</div>

<!--v-on增加事件指令-->
<div id="von">
<button @click="number--">--</button>
<span>{{number}}</span>
<button v-on:click="number++">++</button>
<br>

<button @click="selectTo">点击展示和隐藏</button>
<h1 v-show="check">哈哈哈哈哈哈</h1>
<br>

<button @click="buy(8)">芙蓉王8元</button>
<button @click="buy(18)">和天下18元</button>
<button @click="buy(10)">利群10元</button><br>
<span>{{money+'元'}}</span>
</div>

<div class="fenge">-------------------------------</div>

<!--v-bind设置标签属性-->
<div id="vbin">
    <img :src="imgUrl2" height="150px" :title="neirong" width="200px" alt="">
    <img v-bind:src="imgUrl" height="150px" width="200px" alt="">
    <br><br><br>

    <button v-show="index>0" @click="chage(0)">上一页</button>
    <button v-show="index<list.length-1" @click="chage(1)">下一页</button><br>
    <img width="200px" height="150px" :src="list[index]" alt="">

</div>

<div class="fenge">-------------------------------</div>

<!--v-for指令
基于数据多次循环
v-for="(item,index)int list"
-->
<div id="vfor">
<ul>
    <li v-for="(item,index) in list2">{{item.name}}--{{index}}</li>
</ul>

<ul>
    <li v-for="item in list2" :key="item.id">
        <span>{{item.name}}</span>
        <span>{{item.money}}</span>
        &nbsp;&nbsp;&nbsp;&nbsp;
        <button @click="del(item.id)">delete it</button>
    </li>
</ul>
</div>
<div class="fenge">-------------------------------</div>

<!--vmodel指令-->
<div id="vmodel">
<span>账户:  <input type="text" v-model="username"></span><br>
<span>密码:  <input type="text" v-model="password"></span><br>
<button @click="login">login</button>
<button @click="reset">reset</button>
</div>
<div class="fenge">-------------------------------</div>

<!-- 记事本 -->
<!--输入展示-->
<div id="srzs">
    <input @keyup.enter="addContent" type="text" v-model="contents"><button @click="addContent">add</button>
    <div v-for="(item,index) in list3" :key="item.id">
        <span>{{index+1+'    '}}</span>
        <span>{{item.Actions}}</span>
        <button @click="delOne(item.id)">delete</button>
    </div>
    <div v-show="list3.length>0" class="div">
        <span>总计: {{list3.length}}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <button @click="delAll">清空任务</button>
    </div>
</div>
<div class="fenge">------------------------------------------------------------</div>
 <!-- 操作类名 -->
<!--v-bind-->
<div id="vbind2">
<div v-for="(item,index) in list4">
    <a href="#" :class="{active: index===acitveIndex}" @click="acitveIndex=index">{{item.name}}</a>
</div>
</div>

<div class="fenge">------------------------------------------------------------</div>

<!--v-bind操做style,进度条-->
<div id="vbind3">
<div class="fbox" :style="{backgroundColor: 'rgb(198, 143, 71)',width: '400px',height: '20px'}">
<div class="nbox" :style="{backgroundColor:'green',width: precent+'%',height:'100%'}"><span>{{precent+'%'}}</span></div>
<!-- <div class="nbox" :style="{width: precent +'%'}"> -->
    
</div>
<button @click="precent=25">设置为25%</button>
<button @click="precent=50">设置为50%</button>
<button @click="precent=75">设置为75%</button>
<button @click="precent=100">设置为100%</button>
</div>

<div class="fenge">-------------------------------</div>

 <!--computed指令-->
 <div id="computed">
    <ul>
        <li v-for="item in list2" :key="item.id">
            <span>{{item.name}}</span>
            <span>{{item.money}}</span>
            &nbsp;&nbsp;&nbsp;&nbsp;
        </li>
        <span>总钱钱:{{allMoney}}</span>
    </ul>
 </div>

 <div class="fenge">-----------------------------</div>

 <!--computed指令2-->
<div id="computed2">
    <input type="text" v-model="needFen" placeholder="请输入要分解的名字">
    <button @click="chageName">ok</button><br><input type="text" v-model="firstname">
    +名
    <input type="text" v-model="lastname">
    ==
    <span>{{Allname}}</span>
</div>
<div class="fenge">-------------------------------</div>

<!--计算成绩综合-->
<div id="jscj">
    <input type="text"v-model="Tname" placeholder="请输入科目名"><br>
    <input type="text"v-model.number="Tgrade" placeholder="请输入分数"><br>
    <button @click="zengjia">增加</button>
    <table>
        <thead>
            <th>编号</th>
            <th>科目</th>
            <th>成绩</th>
            <th>操作</th>
        </thead>
        <tbody v-if="list5.length>0">
            <tr v-for="(item,index) in list5" :key="item.id">
                <td>{{index+1}}</td>
                <td>{{item.name}}</td>
                <td :class="{red:item.grade<60}">{{item.grade}}</td>
                <td><button @click="delKemu(item.id)">删除</button></td>
            </tr>
        </tbody>
        <tbody v-else>
            <td>暂无数据!</td>
        </tbody>
        <tfoot v-show="list5.length>0">
            <td>总分:{{AllGrade}}</td>
            <td>平均分{{(AllGrade/list5.length).toFixed(2)}}</td>
        </tfoot>
    </table>
</div>

<div class="fenge">-------------------------------</div>

 <!--watch指令-->
 <div id="watch">
    <input type="text" v-model="NeedFan">
    <span>翻译后->{{NeedFan}}</span><br>

    <input type="text" v-model="obj.NeedFan2">
    <span>翻译后->{{result}}</span><br>

    <select name="" id="" v-model="obj2.lang">
        <option value="english" selected>英语</option>
        <option value="italy">意大利语</option>
        <option value="german">德语</option>
    </select>
    <input type="text" v-model="obj2.content2">
    <span>翻译后->{{result2}}</span>
 </div>

 <div class="fenge">-------------------------------</div>


</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<!-- // 接口地址:https://applet-base-api-t.itheima.net/api/translate
// 请求方式:get
// 请求参数:
// (1)words:需要被翻译的文本(必传)
// (2)lang: 需要被翻译成的语言(可选)默认值-意大利
// ----------------------------------------------- -->
<script>
    let app=new Vue({
        el:'#app',
        data:{
            
        }
    })
    let watch=new Vue({
        el:'#watch',
        data:{
            NeedFan:'',
            obj:{
                NeedFan2:''
            },
            obj2:{
                content2:'消灭',
                lang:''
            },
            result:'',
            result2:'小马'
        },
        watch:{
            NeedFan(newValue,oldValue){
                console.log(newValue)
                console.log(oldValue)
            },
            'obj.NeedFan2' (newValue){
            // console.log('变化了', newValue)
            //async 异步操作
            //这里虽然没有定义timer,但是将timer挂载到了watch这个实例的外面
            // 防抖: 延迟执行 → 干啥事先等一等,延迟一会,一段时间内没有再次触发,才执行
            clearTimeout(this.timer)
            this.timer = setTimeout(async () => {
              const res = await axios({
                url: 'https://applet-base-api-t.itheima.net/api/translate',
                params: {
                  words: newValue
                }
              })
              this.result = res.data.data
              console.log(res.data.data)
            }, 300)
            },
            obj2:{
                deep:true,//深度监视
                immediate:true,//表示一进入页面就立刻执行
                handler (newValue){
                    clearTimeout(this.timer)
                    this.timer = setTimeout(async () => {
                    const res = await axios({
                url: 'https://applet-base-api-t.itheima.net/api/translate',
                params: {
                  words: newValue
                }
              })
              this.result2 = res.data.data
              console.log(res.data.data)
            }, 300)
                }
            }
        }
    })
    let jscj=new Vue({
        el:'#jscj',
        data:{
            list5:[
                {id:1,name:'体育',grade:59},
                {id:2,name:'美术',grade:39},
                {id:3,name:'英语',grade:69},
                {id:4,name:'数学',grade:79},
                {id:5,name:'语文',grade:49}
            ],
            Tname:'',
            Tgrade:'',
            Avegrade:0
        },
        methods:{
            zengjia(){
                this.list5.push({
                    id: +new Date(),name:this.Tname,grade:this.Tgrade
                })
                this.Tname=''
                this.Tgrade=''
            },
            delKemu(id){
                this.list5=this.list5.filter(item =>item.id!=id)
            }
        },
        computed:{
            AllGrade:{
                get(){
                    return this.list5.reduce((sum,item) => item.grade+sum,0)
                }
            }
        }
    })
    let computed2=new Vue({
        el:'#computed2',
        data:{
            firstname:'',
            lastname:'',
            needFen:''
        },
        methods:{
            chageName(){
                if(this.needFen.trim()=='')return;
               this.Allname=this.needFen
            }
        },
        computed:{
            Allname:{
                get(){
                    return this.firstname+''+this.lastname
                },
                set(value){
                    //这里用name作为变量就会出现问题不能展现需要的值
                    this.firstname=value.slice(0,1)
                    this.lastname=value.slice(1)
                }
            }
        }
    })
    let computed=new Vue({
        el:'#computed',
        data:{
            list2:[
                {id:1,name:'芙蓉王 ',money:30},
                {id:2,name:'和天下 ',money:10},
                {id:3,name:'利群    ',money:16},
                {id:4,name:'和气生财',money:50},
            ]
        },
        computed:{
            allMoney(){
                let tal=this.list2.reduce((sum,item) => sum+item.money,0)
                return tal
            }
        }
    })
    let vbind3=new Vue({
        el:'#vbind3',
        data:{
            precent:50
        }
    })
    let vbind2=new Vue({
        el:'#vbind2',
        data:{
            acitveIndex:1,
            list4:[
                {id:1,name:'芙蓉王'},
                {id:2,name:'喜之郎'},
                {id:3,name:'沸羊羊'},
            ]
        }
    })
    let srzs=new Vue({
        el:'#srzs',
        data:{
            contents:'',
            list3:[
                {id:1,Actions:'抽根芙蓉王'},
                {id:2,Actions:'抽根瑞克五'},
                {id:3,Actions:'抽根和天下'},
                {id:4,Actions:'抽根喜之郎'},
            ]
        },
        methods:{
            addContent(){
                if(this.contents.trim()==''){
                    alert("请输入内容!")
                    return;
                }
                this.list3.unshift({
                    id: +new Date(),
                    Actions:this.contents
                })
                this.contents=''
            },
            delOne(id){
                this.list3=this.list3.filter(item=> item.id!=id)
            },
            delAll(){
                this.list3=[]
            }
        }
    })
    let vmodel=new Vue({
        el:'#vmodel',
        data:{
            username:'',
            password:''
        },
        methods:{
            login(){
                alert('username: '+this.username+'\n'+'password: '+this.password)
            },
            reset(){
                this.username=''
                this.password=''
            }
        }
    })
    let vfor=new Vue({
        el:'#vfor',
        data:{
            list2:[
                {id:1,name:'芙蓉王 ',money:'30RMB'},
                {id:2,name:'和天下 ',money:'100RMB'},
                {id:3,name:'利群    ',money:'16RMB'},
                {id:4,name:'和气生财',money:'50RMB'},
            ]
        },
        methods:{
            del(id){
                this.list2=this.list2.filter(item=> item.id!=id)
            }
        }
    })
    let vbin=new Vue({
        el:'#vbin',
        data:{
            imgUrl:'./1.jpeg',
            imgUrl2:'./3.jpg',
            neirong:'冬天来啦',
            list:[
            './1.jpeg','./2.jpg','./3.jpg','./4.jpg'
            ],
            index:0,
            f:false,
            n:true
        },
        methods:{
            chage(uod){  
                if(uod===1){
                    this.index++
                }else{
                    this.index--
                }
            }
        }
    })
    let von=new Vue({
        el:'#von',
        data:{
            number:1,
            check:true,
            money:100
        },
        methods:{
            // 这个里面是无法直接访问这个里面的数据的
            selectTo(){
                von.check=!von.check
            },

            buy(price){
                if(this.money<=price){
                    alert("no money you know ?")
                    return
                }
                this.money-=price
            }
        }
    })
    let xuanze=new Vue({
        el:'#xuanze',
        data:{
            sex:'',
            grade:91
        }
    })
    let chazhi=new Vue({
        el:'#chazhi',
        data:{
            niger:'black man',
            age:16,
            age2:36,
            nigers:{
                name:'nicks',
                do:'农活'
            }
        }
    })
    console.log(chazhi.niger);
    console.log(chazhi.niger='小黑');

    let v_html=new Vue({
        el:'#v_html',
        data:{
            to:"<a href='www.baidu.com'>百度</a>",
            show:"<h3>来百度"
        }
    })


    let showIf=new Vue({
        el:'#showIf',
        data:{
            flag:true,
            flag2:true
        }
    })
</script>
</html>

 

posted @ 2023-11-10 13:29  超爱彬宝同学  阅读(20)  评论(0)    收藏  举报