VUE基本指令介绍

目录

一、VUE介绍

MVVM模型

二、创建VUE

三、Vue指令

{{ }} 

v-html设置元素innerHTML(v-text类似innerText)

v-show和v-if 控制元素显示和隐藏

v-else  v-else-if

v-on绑定事件

v-bind动态设置html标签属性

v-for

v-model实现双向绑定

v-model扩展(组件使用)

v-model简化代码核心步骤:



一、VUE介绍

vue是一个用于构建用户界面的渐进式框架

构建用户界面:基于数据动态渲染页面

MVVM模型

vue模型没有完全遵循MVVM模型,但是受到MVVM模型启发,因此常在文档中使用vm代表vue实例

M:Model数据层,服务器上业务逻辑操作,后端传递数据

V:View视图层,所看到的页面

VM:ViewModel视图数据层,mvvm模式核心,连接view和model桥梁

视图层发生改变,通过DOM Listeners修改数据层

数据层发生改变,通过Data Bindings修改视图层,从而实现数据视图双向绑定

二、创建VUE

1.创建容器

2.导入包

3.创建实例

4.指定配置项el   data=>渲染数据    methods=>提供方法

         el:指定挂载点        data:提供数据

三、Vue指令

        v-html        v-on        v-show        v-if        v-else

        v-bind        v-for        v-model      

{{ }} 

{{}}可以识别JS表达式,三目运算符,但不能识别if...else语句

v-html设置元素innerHTML(v-text类似innerText)

{{ }}无法识别html标签,通过v-html可以识别html标签

<body>
    <div id="app" v-html="name"></div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
    <script>
        const student = new Vue({
            el:'#app',
            data:{
                name:`<h2>小华</h2>`,
                age:18
            }
        })
    </script>  
</body>

v-show和v-if 控制元素显示和隐藏

<div id="app" v-show="age >= 18">该学生成年了</div>
<div id="app" v-if="age >= 18">该学生成年了</div>

以上代码只变动div,都能显示 该学生成年了;当age 小于18,则不显示“该学生成年了”

v-if 和 v-show都能实现元素显示和隐藏

区别在于:v-show,底层实际上通过display = none实现元素隐藏,

                v-if,底层直接删除了元素。

所以,当一个元素反复显示隐藏用v-show,不反复显示隐藏则用v-if

v-else  v-else-if

v-else、v-else-if辅助v-if进行条件渲染

<body>
    <div id="app">
        <p v-if="gender === 1">男</p>
        <p v-else-if="gender === 2">女</p>
        <p v-else>其他</p>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
    <script>
        const student = new Vue({
            el:'#app',
            data:{
                name:'小华',
                age:18,
                gender:1,
                
            }
        })
    </script>  
</body>

v-on绑定事件

绑定事件 = 事件监听(v-on事件)+ 事件处method)

@事件名.stop阻止冒泡,相当于JS中stopPropagation

@事件名.prevent阻止默认行为,相当于JS中preventDefault

以事件默认行为举例

<a @click.prevent href="http://www.baidu.com">阻止默认行为</a>
//相当于以下代码
//<body> 
//        <a href='https://www.baidu.com/'>去百度</a>
//    <script>
//        let a = document.querySelector('a')
//        a.onclick=function(){
//            event.preventDefault()
//        }
//    </script>
//</body>

v-on可以简写为@

<body>
    <div id="one">
        <button  v-text="event" @click="count--"></button>
        <span>{{ count }}</span>
    </div>
    
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
    <script>
        const obj = new Vue({
            el:'#one',
            data:{
                event:'减一',
                count:100
            }
        })
    </script>
</body>
<body>
    <div id="app">
        <button @click=fn(10)>饼干10元</button>
        <button @click="fn(6)">牛奶6元</button>
        <span>银行卡余额:{{money}}</span>
    </div>
    <script>
        const app = new Vue({
            el:'#app',
            data:{
                money:1000
                }, 
                methods:{
                    fn(price){
                        this.money-=price
                    }
            }
        })
    </script>
</body>

v-bind动态设置html标签属性

v-bind可以简写为”  : “

:class ={"类名:布尔值,类名:布尔值,..."}

:class = [类名,类名...]

<body>
<div id="app">
    <button @click="index--" v-show="list.length > 0">上一页</button>
    <img :src="list[index]">
    <button @click="index++" v-show="index < list.length-1 ">下一页</button>
  </div>
  <script>
    const app = new Vue({
      el:'#app',
      data:{
        index:0,
        list:[
        './imgs/11-00.gif',
          './imgs/11-01.gif',
          './imgs/11-02.gif',
          './imgs/11-03.gif',
          './imgs/11-04.png',
          './imgs/11-05.png'
        ],
      }     
    })
  </script>
</body>

v-for

v-for可以遍历数组、对象、数字

v-for=“(item,index)”in 数组

<body>
  <div id="app">
    <h3>便利店</h3>
    <ul>
      <li v-for="item in list">
        {{ item }}
      </li>
    </ul>
  </div>

  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        list: ['饮料', '雪糕', '零食', '水果']
      }
    })
  </script>
</body>

v-model实现双向绑定

v-model.trim去除前后

v-model.number转数字

所谓双向绑定就是:

  1. 数据改变后,呈现的页面结果会更新

  2. 页面结果更新后,数据也会随之而变

    <body>
      <div id="app">  
          账户:<input type="text" v-model="username"><br>
          密码:<input type="password" v-model="password"><br>
          <button @click="login">登录</button>
          <button @click="reset">重置</button>
        </div>
      
      <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
      <script>
        const app = new Vue({
          el:'#app',
          data:{
            username:'',
            password:''
          },
          methods:{
            login(){
              console.log(this.username,this.password );         
            },
            reset(){
              this.username='',
              this.password=''         
            }
          }
    
        })
        </script>
    </body>

v-model扩展(组件使用)

数据改变,视图随之发生改变(数据由父组件提供,子传父)

视图改变,数据同时发生改变(子组件数据发生改变,父组件数据同时发生改变)

v-model默认会利用名为value的prop和名为input的事件

在父组件中使用v-model:

v-model="changeValue"

相当于:

:value= "changeValue"

@input="子传父的数据"

v-model简化代码核心步骤:

        1、子组件中:props通过value接收,事件触发input

        2、父组件中:v-model直接给组件绑定数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue.js 提供了自定义指令的功能,可以用来封装常用的 DOM 操作或者添加特定的行为。自定义指令分为全局指令和局部指令两种。 ## 全局指令Vue 实例化之前定义一个全局指令,这个指令可以在任何 Vue 实例中使用。 ```js // 注册一个全局自定义指令 `v-focus` Vue.directive('focus', { // 指令的定义 inserted: function (el) { // 聚焦元素 el.focus() } }) ``` 在上面的例子中,我们定义了一个名为 `v-focus` 的全局指令,用于将元素聚焦。这个指令的定义包含 `inserted` 钩子函数,它会在绑定元素插入到父节点时调用。 接下来,在模板中使用这个指令: ```html <input v-focus> ``` 这样,当这个输入框被插入到页面中时,它会自动获取焦点。 ## 局部指令 局部指令只能在当前组件中使用,它的定义方式与全局指令有所不同。 ```js Vue.component('my-component', { template: '<input v-model="message" v-focus>', directives: { focus: { // 指令的定义 inserted: function (el) { // 聚焦元素 el.focus() } } } }) ``` 在上面的例子中,我们在组件的选项中定义了一个局部指令 `v-focus`,它的定义方式与全局指令相同,只不过是在 `directives` 选项中定义而已。 接下来,在模板中使用这个指令: ```html <my-component></my-component> ``` 这样,当 `my-component` 组件被插入到页面中时,它的输入框元素会自动获取焦点。 以上就是 Vue.js 自定义指令基本用法。需要注意的是,指令的钩子函数可以有多个,每个钩子函数都有特定的用途,具体可以参考 Vue.js 的官方文档。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值