首页 > 其他分享 >vue框架3

vue框架3

时间:2023-02-15 21:26:02浏览次数:38  
标签:vue console log 框架 item 循环 事件 var

js的几种循环方式

1.v-for可以循环的变量

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<body>
<div class="app">
    <h2>1.循环数组</h2>
    <span v-for="item in l">{{item}}</span>
    <h2>2.循环数组带索引</h2>
    <div v-for="(item,index) in l">第{{index+1}}个值,值是{{item}}</div>
    <h2>3.循环对象,默认value</h2>
    <div v-for="item in info">{{item}}</div>
    <h2>4.循环对象,带key和value</h2>
    <div v-for="(item,index) in info">{{index}}:{{item}}</div>
    <h2>5.循环字符串</h2>
    <div v-for="item in T">{{item}}</div>
    <h2>6.循环字符串,带索引</h2>
    <div v-for="(item,index) in T">第{{index+1}}个字母{{item}}</div>
    <h2>7.循环字符串,带索引,空格也算占位</h2>
    <div v-for="(item,index) in T"><p v-if="item!=' '">第{{index+1}}个字符{{item}}</p><br v-else></div>
    <h2>8.循环数字</h2>
    <div v-for="item in 6">{{item}}</div>
    <h2>9.循环数字带索引</h2>
    <div v-for="(item,index) in 6">第{{index+1}}个数是{{item}}</div>
</div>
</body>
<script>
    new Vue({
        el:'.app',
        data:{
            l:[1,2,3],
            info:{name:'han',age:23},
            T:'hello world!',
        }
    })
</script>
</html>

2.js的循环方式

# 1.js循环都是基于索引的循环
"""
python没有基于索引的循环,都是基于迭代的循环
"""
<script>
    for(i=0;i<10;i++){
        console.log(i)
    }     // 0,1,2,3,4,5,6,7,8,9
    var a = [4,5,6,7]
    for (i=0;i<a.length; i++){
        console.log(a[i])  
    }    // 4,5,6,7 (基于索引的循环)
</script>

# 2.js的in循环,拿到的是索引
<script>
    // 基于迭代的循环
    var a= [4,5,6,7]
    for (item in a){
        console.log(item)
    }  // 0,1,2,3 原生js拿到的是索引
    var a = [4,5,6,7]
    for (i in a) {
        console.log(a[i])
    }  // 4,5,6,7 拿到的是a里面的值
</script>

# 3.es6语法,of循环
<script>
    var a = [4,5,6,7]
    for (item of a) {
        console.log(item)
    }  // 4,5,6,7
</script>

# 4.数组的方法,forEach可以循环
<script>
    var a = [4,5,6,7]
    a.forEach( function (item){
        console.log(item)
    })   // 4,5,6,7  a如果是对象就无法点出forEach
</script>

# 5.jquery的循环,循环数组,对象
// 需要引入jquery的cdn
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
// 代码:
<script>
    var a = [4,5,6,7]
    $.each(a, function (index,item) {
        console.log(index)  // 0,1,2,3 索引
        console.log(item)   // 4,5,6,7 数值
    }) // 0,4,1,5,2,6,3,7
</script>

key值的解释

<div v-for="item in 8" :key="item">{{item}}</div> 
     1. vue的v-for写在标签上,
     2. 在标签上加一个key(key属性是vue提供的),
     3. 用属性指令()绑定一个变量
     4. key(每次循环key值是唯一的)的值每次都不相同
     5. 这样可以加速虚拟dom的替换,从而提升循环效率    

数组,对象的检测与更新

# 对象:
    - 新增一个key-value,发现页面没有变化,以后用:
           Vue.set(this.info, 'hobby','篮球')
    - 设置一下即可
# 代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<body>
<div class="app">
    <h1>循环对象</h1>
    <div v-for="(value,key) in info">
        <h2>key值为:{{key}}</h2>
        <h3>value值为:{{value}}</h3>
        <br>
    </div>
    <button @click="handleAdd">点我添加数据</button>
</div>
</body>
<script>
    new Vue({
        el:'.app',
        data:{
            info:{name:'han',age:23},
        },
        methods:{
            handleAdd(){
                // 页面会变化
                this.info['name'] = '彭于晏'
                // 页面不会变,
                Vue.set(this.info,'hobby','篮球')
            }
        }
    })
</script>
</html>

input事件

# input的事件:
click       点击事件
input      当输入框进行输入的时候触发的事件
chango   当元素的值发生改变时,触发的事件
blur        当输入框失去焦点的时候,触发的事件
focus      当获得焦点触发事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<body>
<div class="app">
    <h1>1.点击事件</h1>
    <input type="text" @click="handleClick">
    <h1>2.失去焦点</h1>
    <input type="text" @blur="handleBlur">
    <h1>3.输入事件input</h1>
    <input type="text" @input="handleInput">
    <h1>4.change事件</h1>
    <input type="text" @change="handleChange">
    <h1>5.focus事件</h1>
    <input type="text" @focus="handleFocus">
</div>

</body>
<script>
    new Vue({
        el:'.app',
        data:{
        },
        methods:{
            handleClick() {
                alert('点击了事件')
            },
            handleBlur(){
                console.log('失去了焦点')
            },
            handleInput(){
                console.log('输入了东西')
            },
            handleChange(){
                console.log('内容发生改变')
            },
            handleFocus(){
                console.log('获得了焦点')
            }
    }
    })
</script>
</html>

v-model双向数据绑定

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<body>
<div class="app">
    <h1>1.单向数据绑定</h1>  <!--改变变量vm对应的数据,才会发生改变-->
    <input type="text" :value="name">{{name}}
    <h1>2.双向数据绑定</h1>  <!--改变变量vm对应数据或前端输入框任意一个,另一个也会改变-->
    <input type="text" v-model="age">{{age}}
</div>

</body>
<script>
    var vm = new Vue({
        el:'.app',
        data:{
            name:'han',
            age:23
        },
    })
</script>
</html>

过滤案例

箭头函数

<script>
// 补充
    // 1.数组的过滤方法
    var dataList=['a', 'at', 'atom', 'be', 'beyond', 'cs', 'csrf']
    dataList.filter(function (item){
        return true  // 表示这个值保留,false表示这个值舍弃
    })
    // 2.字符串indexOf方法
    // 判断子字符串是否在当前字符串中,在返回其索引,不再返回-1
    var s = 'han is handsome'
    var s1 = 'hhh'
    var s2 = s.indexOf(s1)
    console.log(i)
    // 3.es6的箭头函数写法
    // 函数中套函数,this指向有问题,有了箭头函数,用的都是上一级的this,因为箭头函数没有自己的this
    // >-1. 无参数,无返回值箭头函数
    var f = () => {
        console.log('函数')
    }
    // >-2.有一个参数,没有返回值的箭头函数,括号可留可去
    var f = item => {  // var f = (item) => {
        console.log(item)
    }
    // >-3.有多个参数,没有返回值的箭头函数,括号不可去
    var f = (item, key) => {
        console.log(item)
    }
    // >-4.有一个参数,一个返回值
    // 方式一:
    var f =  (item)=> {
        return item + 'han'
    }
    // 方式二:
    var f = item => {
        return item + 'han'
    }
    // 方式三:
    var f = item => item + 'han'

    var res = f('han')
    console.log(res)

</script>

过滤

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<body>
<div class="app">
    <h1>过滤案例</h1>
    <p>请输入你要搜索的内容:
        <input type="text" v-model="myText" @input="handleInput">
    </p>
    <ul>
        <li v-for="item in newDataList">{{item}}</li>
    </ul>
</div>
</body>
<script>
    var vm = new Vue({
        el:'.app',
        data:{
            myText:'',
            dataList: ['a', 'at', 'atom', 'be', 'beyond', 'cs', 'csrf'],
            newDataList:['a', 'at', 'atom', 'be', 'beyond', 'cs', 'csrf'],
        },
        methods:{
            handleInput() {
                // 简化前
                // this.newDataList = this.dataList.filter(item => {
                //     // 判断item在不在myText中
                //     // 1.this指向问题
                //     // if (_this.myText.indexOf(item) >= 0) {
                //     // 2.判断输入的值myText是否在item中
                //     // if (item.indexOf(_this.myText) >= 0) {
                //     //     return true
                //     // } else {
                //     //     return false
                //     // }
                //     // 以上五行简写后:
                //     return item.indexOf(this.myText) >= 0
                // })
                // 简化后
                this.newDataList = this.dataList.filter(item => item.indexOf(this.myText) >= 0 )
            }
        }
    })
</script>
</html>

 

事件修饰符

# 事件的修饰符
.stop          只处理自己的事件,子控件冒泡的事件不处理(组织事件冒泡)
.self           只处理自己的事件,子控件冒泡的事不处理
.prevent     阻止a链接的跳转
.once         事件只会触发一次(适用于抽奖)


# 代码示例:(在console中查看效果)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<body>
<div class="app">
    <h1>事件修饰符stop,子控件不再冒泡给父控件</h1>
    <ul @click='handleUl'>
        <li @click.stop="handleLi">第一</li>
        <li>第二</li>
    </ul>

    <h1>事件修饰符self:只处理自己的事件,子控件的冒泡,不处理</h1>
    <ul @click.self="handleUl">
        <li @click='handleLi'>第一</li>
        <li>第二</li>
    </ul>

    <h1>prevent组织a的跳转</h1>
    <a href="http://www.cnblog.com" @click.prevent="handleA">点击进入博客园</a>

    <h1>once 只响应一次</h1>
    <button @click.once="handleClick">点击抽奖</button>
</div>

</body>
<script>
    var vm = new Vue({
        el:'.app',
        data:{},
        methods: {
            handleLi() {
                console.log('li被点击了')
            },
            handleUl() {
                console.log('ul被点击了')
            },
            handleA(){
                console.log('a标签被点击了')
                // 阻止a的跳转,自己决定要不要跳
                // 手动指定跳
                location.href = 'http://www.baidu.com'
            },
            handleClick() {
                console.log('点击事件')
            }
        }
    })

</script>
</html>

按键修饰符

# 按钮事件:按了键盘某个键,就会触发函数的执行
@keyup="handleKeyUp"

# 键盘事件
keydown:按下键盘键
keypress:紧接着keydown事件触发(只有按下字符键时触发)
keyup:释放键盘键

# 按键修饰符:只有某个按键被按下才触发
@keyup.enter
@keyup.13



<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<body>
<div class="app">
    <!--    1.按键检测-->
    <!--    <input type="text" v-model="text" @keyup="handleKeyUp">{{text}}-->
    <!--    2.只能检测特定的按键,以回车键为例-->
    <!--    <input type="text" v-model="text" @keyup="handleKeyUp1">{{text}}-->
    <!--    3.监测回车键,传入两个参数,a对应的是1,event对应2-->
    <!--    <input type="text" v-model="text" @keyup.13="handleKeyUp2(1,2)">{{text}}-->
    <!--    4.监测回车键,传入$event,监测event的值-->
    <!--    <input type="text" v-model="text" @keyup.enter="handleKeyUp2(1,$event)">{{text}}-->
</div>

</body>
<script>
    var vm = new Vue({
        el:'.app',
        data:{
            text:''
        },
        methods: {
            // 1.按键监测
            handleKeyUp(event) {
                console.log('按键被按下了',event.key,event.keyCode) // keyCode会显示检测按键对应的数字关系
            },
            // 2.监测回车
            handleKeyUp1(event){
                if (event.keyCode == 13) {
                    console.log('开始跟后端交换搜索了,只有回车按键会触发执行')
                }
            },
            handleKeyUp2(a,event) {
                console.log(event)
                console.log(a)
                console.log('enter被按了')
            },

            handleKeyUp3(a, event) {
                console.log(event)
                console.log('enter被按了')
            }

        }
    })
</script>
</html>

表单控制

#本质:input框>>>>变量类型是什么?
   text         类型
   radio       单选
   checkbox 单选和多选

# 代码示例:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<body>
<div class="app">
    <p>用户名:<input type="text" v-model="username"></p>
    <p>密码:<input type="password" v-model="password"></p>
    <p>性别:
        男:<input type="radio" v-model="gender" value="1">
        女:<input type="radio" v-model="gender" value="2">
    </p>
    <p>记住密码:<input type="checkbox" v-model="remember"></p>
    <p>爱好:
            篮球:<input type="checkbox" v-model="hobby" value="篮球">
            足球:<input type="checkbox" v-model="hobby" value="足球">
            排球:<input type="checkbox" v-model="hobby" value="排球">
    </p>
    <button @click="handleClick">登录</button>
</div>

</body>
<script>
    var vm = new Vue({
        el:'.app',
        data:{
            username:'',
            password:'',
            gender:'',          //radio单选,多个radio绑定同一个变量,选中某个,就对应value值
            remember:'false',   //checkbox单选是true,false
            hobby:[]            //checkbox多选是数组类型,必须一开始定义就是数组,多个checkbox可绑定一个变量
        },
        methods: {
            handleClick(){
                console.log(this.username,this.password,this.gender,this.remember,this.hobby)
            }
        }
    })
</script>
</html>

 

标签:vue,console,log,框架,item,循环,事件,var
From: https://www.cnblogs.com/juzijunjun/p/17122521.html

相关文章

  • vueday3
    昨日回顾#1mvvm演示#2插值语法{{}} -三目运算符条件?'':''#3文本指令 -v-xxvue的指令,放在标签上<pv-xx></p>-v-text='变......
  • vue3
    今日内容概要js的几种循环方式key值的解释数组对象的检测与更新input时间v-model双向数据绑定过滤案例事件修饰符按键修饰符表单控制今日内容详细js几种循环......
  • Axios-Vue
    axios中文文档安装npmiaxios基本使用引入importaxiosfrom'axios';使用//GET请求axios({method:'get',url:'http://api/'}).then(res=>{c......
  • vue基本操作
    1js的几种循环方式1.1v-for可以循环的变量<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><scriptsrc="./js/vu......
  • Vue的基础操作
    目录Vue的基础操作js的几种循环方式v-for可以循环的变量js的循环方式key值的解释数组,对象的检测与更新input事件v-model双向数据绑定过滤事件事件修饰符(了解)按键修饰符单......
  • vue
    今日内容1.js的几种循环方式2.key值的解释3.数组、对象的检测与更新4.input事件5.v-model双向数据绑定6.过滤案例7.事件修饰符(了解)8.按键修饰符9.表单控制1.js......
  • vue二
    目录一,js循环方式测试1.循环数组2.循环数组带索引3.循环对象默认取value4.循环对象带key和value5.循环字符串6.循环数字循环方式1.js的循环2.js的in循环3.es6语法4.数组循......
  • VUE初识
    目录插值语法文本指令属性指令事件指令class和style条件渲染列表渲染v-for可以循环的变量js的循环方式key值的解释数字,对象的检测与更新input事件v-model双向数据绑定过滤......
  • vue3数据类型ref,Reactive,shallowRef,shallowReactive基本用法
    1.ref用于创建基础类型的响应式,也可以创建引用类型的响应式.2.ref对于引用类型,底层也是转换为reactive来进行响应式处理3.ref创建的响应式数据在脚本中需要通过.......
  • python70 前端框架之vue js的集中循环方式、key值的解释、input事件、v-model双向数
    js的几种循环方式v-for可以循环的变量可以循环的:数组、数组带索引对象、对象带key、value字符串字符串带索引数字、数字带索引<!DOCTYPEhtml......