vue模板语法、列表渲染、条件渲染、 事件、单项 和 双向数据绑定

1.vue.js源代码

. vue.js源代码

  • 匿名函数 (function(){}) ()
  1. 特点
    • 安全性高
    • 减少了函数命名冲突
    • 第二个括号才是函数的真正运行, 里面可以传入实际参数
    • 第一个括号确定了匿名函数的作用范围, 语法不会报错, 里面放一个没有名字的函数, 函数可以接收形式参数
  2. 底层代码封装
    • 匿名函数作用
      1. 确定vue.js这个库的使用方法

        • 直接将Vue当做全局的一个方法使用, 因为将Vue挂在了 window
        • 使用了amd来定义vue.js这个库为一个模块, 这样我们才能模块化引入
      2. 封装库如何定义

2.模板语法

  1. alert console.log 不能用
  2. if条件改成使用三元表达式
<p>
if:{{ bool?num:str }}
</p>
  1. 方法一定要写在methods里面, 不要直接写在模板语法中
  2. 模板语法中支持使用匿名函数可以直接写
<p> fun: {{ (function(){ return 1+1 })() }}</p>

3.列表渲染

v-for指令
v-for = " xxx in data "
如:

<div id="app">
<ul>
    <li v-for = " (item,index) in arr">
        {{ item }}---{{ index }}
    </li>
</ul>
</div>

new Vue({
    el: "#app",
    data: {
        arr: [1, 2, 3, 4],
    }
})

对象:
v-for = “(index,item,key) in obj”
如:

<div id="app">
<ul>
    <li v-for = "(index,item,key) in obj">     
            {{ index }}----{{ item }} -- {{ key }}
    </li>
</ul>
</div>

new Vue({
    el: "#app",
    data: {
            obj: {
                id: 1,
                name: '王麻子',
                age: 50
            },
    }
})

嵌套函数

<ul>
    <li v-for = "item in json">
        <ul>
            <li v-for = "item in item">
                {{ item }}
            </li>
        </ul>
    </li>
</ul>

new Vue({
    el: "#app",
    data: {
            
json: [
    {
        card: 1,
        name: '齐天润',
        age: 20
    },
    {
        card: 2,
        name: '段云凤',
        age: 18
    }
],


    }
})

总结:

  1. v-for 最多可以有三个参数
  2. 格式
    v-for = “(index,item,key) in data”
    名词解释
    * index: 索引
    * item; data中的每一个
    * key; 如果是对象, 表示对象的key
  3. v-for如果有循环嵌套, 那么value可以写成一样的命名, 但是我们建议大家写成不一样的命名, 理由: 比较语义化
  4. v-for 可以循环 数字或是一个字符
    扩展:
    v-for = ’ item in data’
    底层:
function v-for( arg ){
//做字符串处理
    var data = 'data'
    for( var i = 0 ; i < data.length; i++ ){
    }
}

3.条件渲染

两种:

  1. v-if
  • 单路分支
<p v-if = " f ">
true
</p>
  • 双路分支
<p v-if = " f ">
true
</p>
<p v-else>
false
</p>
  • 多路分支
<p v-if = " text === 'A'"> A </p>
<p v-else-if = " text === 'B'"> B </p>
<p v-else> C </p>
  1. v-show
<p v-show = " f ">
if条件
</p>

4.事件

事件基础内容:

  1. 属性绑定
<div onClick = "alert"></div>
function alert(){
alert('hello vue.js')
}
  1. js操作
// 1. 获取数据
var data = 'hello vue.js'
// 2. 获取DOM
var app = document.querySelector('#app')
// 3. 渲染数据
app.innerHTML = data
// 4. 添加事件
app.onclick = function(){
app.style.background = 'red'
}
  1. 事件的组成部分:
    1. DOM
    2. on 添加事件的形式
    3. 事件类型 click
    4. 事件处理函数
1. 事件的添加
<button v-on:click = "changeMsg">
    {{ msg }}
</button>


new Vue({
    el: '#app',
    data: {
        msg: 'hello vue.js'
    },    
    methods: { 
       changeMsg(){
            this.msg = 'hello 我骏哥~~~'
        },
    }
})
2. 事件传参
<button @click = "argHandler('hello 骏哥~~~')">
        eventArgument
</button>

new Vue({
    el: '#app',
    data: {
        msg: 'hello vue.js'
    },    
    methods: {
        argHandler(value){
            alert(value)
        },
    }
})
3.事件对象
<button @click = "eventHandler">
    event
</button>

new Vue({
    el: '#app',
    data: {
        msg: 'hello vue.js'
    },    
    methods: {
        eventHandler(e){
        console.log(e)
        },
    }
})
4.事件多个参数

需求
我们有一个方法, 这个方法中有两个参数, 第一个参数是自定义参数, 第二个参数是事件对象
问题:第二个参数 事件对象 = undefined
原因: 当我们自定义参数后, 系统无法自动识别 , 是不是事件对象
解决: 传入事件对象的实际参数: $event


<button @click = "evHandler('骏哥',$event)">
args
</button>

new Vue({
    el: '#app',
    data: {
        msg: 'hello vue.js'
    },    
    methods: {
        evHandler(arg,e){
            console.log(arg)
            console.log(e)
        }
    }
})
总结:

vue使用第一种事件添加的形式 —》 v-on
格式:
v-on:eventType = eventFnName
简写:
@eventType = eventFnName
事件处理函数写在配置项中 methods中
书写步骤:
先写方法, 再去绑定

5.事件高级

1. 事件修饰符
举例:事件冒泡
通过举例告诉大家, e.stopPropagation()这个代码的复用性差
所以vue这边有一个解决方案: 使用事件修饰符(modify)
格式:
* v-on:eventType.modify = eventFnName

<p @click.stop = 'smallHandler'></p>

类型:

  • .stop : 阻止冒泡行为
  • .prevent :阻止浏览器默认行为
  • .capture : 阻止捕获行为
  • .self : 自身触发
  • .once : 只执行一次
  • .passive : 行为结束后触发(scroll)

2. 按键修饰符 ( 键盘事件 keyup keydown keypress)

  • .enter
  • .tab
  • .delete (捕获“删除”和“退格”键)
  • .esc
  • .space
  • .up
  • .down
  • .left
  • .right
    3. 自定义按键修饰符
    1. 全局修改
    * Vue.config.keyCodes.自定义修饰符 = 键盘码
    使用:
    * @keyup.自定义修饰符 = eventFnName
    4. 自定义事件(自定义事件类型)
    如何定义?
    1. 使用new Vue() 的到的实例来定义
    * vm. o n ( e v e n t N a m e , c a l l b a c k ) 2. 如 何 触 发 呢 ? ∗ v m . on(eventName,callback) 2. 如何触发呢? * vm. on(eventName,callback)2.vm.emit(eventName)
    * this.$emit(eventName)

在这里插入图片描述

6.单项数据绑定:

  1. 概念;
    将数据和属性进行绑定, 也就是原生身上的属性的值就是数据
  2. 格式
    v-bind:attr = data
    简写:
    :attr = data
    数据更改 , 视图就更新
<div id="app">
<input type="text" v-bind:value="msg">
</div>

new Vue({
    el: '#app',
    data: {
        msg: 'hello vue.js'
    }
})

双向数据绑定
数据改变, 视图更新,
视图改变, 数据更新

  1. 格式:
    v-model:attr=data
    简写:可以省略属性
    v-model=data
  2. 特别强调:
    v-model用于表单, v-model默认绑定了value属性

<div id="app">
<input type="text" v-model="msg">
</div>

 new Vue({
    el: '#app',
    data: {
      msg: 'hello vue.js'
    }
  })
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值