v-bind绑定

一、标签属性动态绑定

方式一: v-bind:属性名="data声明的变量名"

方式二:(简写) 将v-bind省略,直接 :属性名="data声明的变量"

v-bind.属性名[.修饰符]="变量名、计算属性。。

对应还提供了修饰符:

1 .camel: 将横杠形式属性名转换成驼峰形式的属性名

如:v-bind:view-box="viewBoxData" 显示为view-box="**"

使用v-bind:view-box.camel="viewBoxData"> 显示为viewBox="**"

2 .attr 强制绑定dom原生属性

v-bind:age.attr="123" > 查看html代码:标签上看到age=123

3 .prop 强制绑定子组件的prop属性

v-bind:age.prop="123" 查看html代码,标签上看不到age属性

二、动态指定属性名

eg:

html代码:

<h3>动态指定属性名</h3>

<button disabled="true">按钮</button>

<button :[key]="value">动态绑定属性名</button>

script里面的代码如下:

data(){

return{

igurl:'https://cn.vuejs.org/images/logo.png',

age:19,

viewboxdata:'0 0 128 128',

key:'disabled',

value: true,

id: 999,

to: 'http://www.baidu.com'

}

}

data 里面key的值为disabled,value为true。显示效果如下图

通过修改key的值,按钮可以点击了

三、同时绑定多个属性

以对象的方式绑定, key就是标签的属性名,value就是动态值

如果标签上有显示写明相同名称的属性,按编写属性的顺序,则后面的会覆盖前面的

下面的展示的是 id="8888"

<a :="{id : id,href:to}" id="8888">v-bind简写动态绑定多个属性</a>

下面的展示的是 id="999"

<a id="9999" :="{id : id,href:to}" >v-bind简写动态绑定多个属性</a>

eg:

<a id="9999" :="{id : id,href:to}">v-bind简写动态绑定多个属性</a>

<br>

<a id="9999" v-bind:="{id : id,href:to}">v-bind 动态绑定多个属性</a>

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>v-bind属性动态绑定</title>
</head>
<body>
    <!--
        标签属性动态绑定
        方式一 v-bind:属性名="data声明的变量名"
        方式二(简写) 将v-bind省略,直接 :属性名="data声明的变量"
        v-bind.属性名[.修饰符]="变量名、计算属性。。"
        对应还提供了修饰符:
            .camel: 将横杠形式属性名转换成驼峰形式的属性名
                如:v-bind:view-box="viewBoxData" 显示为view-box="**"
                使用v-bind:view-box.camel="viewBoxData"> 显示为viewBox="**"
            .attr 强制绑定dom原生属性
                v-bind:age.attr="123" > 查看html代码:标签上看到age=123
            .prop 强制绑定子组件的prop属性
                v-bind:age.prop="123" 查看html代码,标签上看不到age属性
    -->
    <div id="app">
        <!--v-bind标签属性动态绑定-->
        <h3>v-bind标签属性动态绑定</h3>

        <img v-bind:src="igurl">
        <!--简写方式`:属性名="**"`-->
        <h3>简写方式`:属性名="**"`</h3>
        <img :src="igurl">
        
        <!--.attr 指明绑定到原生属性-->
        <h3>.attr 指明绑定到原生属性</h3>
        <img :src.attr="igurl">

        <!--.prop 指明绑定到子组件属性,而下面img标签不是子组件,即使使用了prop修饰符也会作用到原生上-->
        <h3>.prop 指明绑定到子组件属性</h3>
        <img :src.prop="igurl">
        <!--以下方式没有指定修饰符,会作为原生属性使用,也会传递到子组件中(子组件中有声明对应的prop)-->
        <p :age="age">没有指定修饰符</p>
        <!--attr修饰符指明绑定到 原生属性上age,即使子组件声明了age也不会接收到值-->
        <p :age.attr="age">attr修饰符</p>
        <!--prop修饰符指明绑定到 子组件属性上age,而不会绑定到原生属性上(也就是html代码查看不到)-->
        <p :age.prop="age">prop修饰</p>
        <!--.camel将横杠转为驼峰形式-->
        <h3>.camel将横杠转为驼峰形式</h3>
        <!--idcard=19没有转为驼峰,因为html默认是忽略大小写,会将不必要为大写的字母全部转为小写-->
        <p :id-card.camel="age" >.camel修饰,不是必要属性不会转为驼峰</p>
        
        <svg class="logo" :view-box.camel="viewboxdata" width="24" height="24" data-v-c0161dce=""><path fill="#42b883" d="M78.8,10L64,35.4L49.2,10H0l64,110l64-110C128,10,78.8,10,78.8,10z" data-v-c0161dce=""></path><path fill="#35495e" d="M78.8,10L64,35.4L49.2,10H25.6L64,76l38.4-66H78.8z" data-v-c0161dce=""></path></svg>
        
        <!--动态指定属性名-->
        <h3>动态指定属性名</h3>
        <button disabled="true">按钮</button>
        <button :[key]="value">动态绑定属性名</button>

        <!--同时绑定多个属性:以对象的方式绑定
            key就是标签的属性名
            value就是动态值
            如果标签上有显示写明相同名称的属性,按编写属性的顺序,则后面的会覆盖前面的
            下面的展示的是 id="8888"
                        <a  :="{id : id,href:to}" id="8888">v-bind简写动态绑定多个属性</a>
            下面的展示的是 id="999"
                        <a id="9999" :="{id : id,href:to}" >v-bind简写动态绑定多个属性</a>
        -->
        <a id="9999" :="{id : id,href:to}">v-bind简写动态绑定多个属性</a>
        <br>
        <a id="9999" v-bind:="{id : id,href:to}">v-bind 动态绑定多个属性</a>


    </div>

    <script src="./node_modules/vue/dist/vue.global.js"></script>
    <script type="text/javascript">
        const {createApp} = Vue;
        const app = createApp({
            data(){
                return{
                    igurl:'https://cn.vuejs.org/images/logo.png',
                    age:19,
                    viewboxdata:'0 0 128 128',
                    key:'disabled',
                    value: true,
                    id: 999,
                    to: 'http://www.baidu.com'
                }
            }
        }).mount("#app");
        console.log('app',app);
    </script>
</body>
</html>
相关推荐
希望永不加班3 分钟前
SpringBoot 中 AOP 实现多数据源切换
java·数据库·spring boot·后端·spring
早起傻一天~G7 分钟前
vue2+element-UI上传图片封装
开发语言·javascript·ui
广师大-Wzx10 分钟前
JavaWeb:前端部分
java·前端·javascript·css·vue.js·前端框架·html
生万千欢喜心11 分钟前
Linux 安装金蝶天燕中间件 AAS-V9.0.zip
java·linux
M ? A13 分钟前
你的 Vue v-memo 与 v-once,VuReact 会编译成什么样的 React 代码?
前端·javascript·vue.js·经验分享·react.js·面试·vureact
是上好佳佳佳呀17 分钟前
【前端(七)】CSS3 核心属性笔记:单位、背景、盒子模型与文本换行
前端·笔记·css3
海兰25 分钟前
【第2篇-续】从零开始helloworld使用openAI通用模型的完整实现示例附源代码
java·人工智能·spring boot·alibaba·spring ai
ooseabiscuit26 分钟前
记录 idea 启动 tomcat 控制台输出乱码问题解决
java·tomcat·intellij-idea
执笔画流年呀28 分钟前
多线程及其特性
java·服务器·开发语言
大大杰哥34 分钟前
Docker笔记
java·docker