五、vue基础-指令之v-bind

这篇具有很好参考价值的文章主要介绍了五、vue基础-指令之v-bind。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、v-bind

前面要讲的一系列指令,主要是将值插入到模板内容中。

 但是,除了内容需要动态来决定外,某些属性我们也希望动态来绑定。

  • 比如动态绑定a元素的href属性;
  • 比如动态绑定img元素的src属性;

绑定属性我们使用v-bind:

  • 缩写:冒号(:)
  • 预期:any(with argument) | Object(without argument),可以是任何一个值也可以是一个对象
  • 参数:attrOrProp(optional)
  • 修饰符:.camel - 将 kebab-case-attribute名转换为 camelCase
  • 用法 动态地绑定一个或多个attribute,或一个组件prop到表达式。

(1)案例一:绑定img的src属性

添加下面一行代码之后,imgUrl就会去data里面找,找到之后就会替换掉。动态解析

<img v-bind:src="imgUrl" alt="" />
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div id="app">
      <!-- 1. 绑定img的src属性 -->
      <img v-bind:src="imgUrl" alt="" />
    </div>
    <script src="../lib/vue.js"></script>

    <script>
      const app = Vue.createApp({
        // data: option api
        data: function () {
          return {
            imgUrl:
              'http://p1.music.126.net/PunczcKM35-KN2-JT0VeTQ==/109951168547324777.jpg',
          };
        },
      });

      app.mount('#app');
    </script>
  </body>
</html>

(2)案例二:绑定a的href属性

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div id="app">
      <!-- 1. 绑定img的src属性 -->
      <img v-bind:src="imgUrl" alt="" />

      <!-- 2. 绑定a的href属性 -->
      <a v-bind:href="href">百度一下</a>
    </div>
    <script src="../lib/vue.js"></script>

    <script>
      const app = Vue.createApp({
        // data: option api
        data: function () {
          return {
            imgUrl:
              'http://p1.music.126.net/PunczcKM35-KN2-JT0VeTQ==/109951168547324777.jpg',
            href: 'http://www.badu.com',
          };
        },
      });

      app.mount('#app');
    </script>
  </body>
</html>

 (3)实战:点击按钮切换图片

点击按钮把当前展示的图片切换成另外一张图片。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div id="app">
      <div>
        <button @click="changeImg">切换图片</button>
      </div>

      <!-- 1. 绑定img的src属性 -->
      <img v-bind:src="imgUrl" alt="" />
    </div>
    <script src="../lib/vue.js"></script>

    <script>
      const app = Vue.createApp({
        // data: option api
        data: function () {
          return {
            imgUrl:
              'http://p1.music.126.net/PunczcKM35-KN2-JT0VeTQ==/109951168547324777.jpg',
            href: 'http://www.badu.com',
          };
        },
        methods: {
          changeImg: function () {
            this.imgUrl =
              'http://p1.music.126.net/oL87fivpHSztzsOBJhwqFg==/109951168547311981.jpg';
          },
        },
      });

      app.mount('#app');
    </script>
  </body>
</html>

图片是不是切换成功啦?那如果我们想再次点击切换回原来的图片我们该怎么去做?(根据目前所学到的知识)

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div id="app">
      <div>
        <button @click="switchImg">切换图片</button>
      </div>

      <!-- 1. 绑定img的src属性 -->
      <img v-bind:src="showImgUrl" alt="" />
    </div>
    <script src="../lib/vue.js"></script>

    <script>
      const app = Vue.createApp({
        // data: option api
        data: function () {
          return {
            imgUrl1:
              'http://p1.music.126.net/PunczcKM35-KN2-JT0VeTQ==/109951168547324777.jpg',
            imgUrl2:
              'http://p1.music.126.net/oL87fivpHSztzsOBJhwqFg==/109951168547311981.jpg',
            showImgUrl:
              'http://p1.music.126.net/oL87fivpHSztzsOBJhwqFg==/109951168547311981.jpg',
            href: 'http://www.badu.com',
          };
        },
        methods: {
          switchImg: function () {
            this.showImgUrl =
              this.showImgUrl === this.imgUrl1 ? this.imgUrl2 : this.imgUrl1; 
          },
        },
      });

      app.mount('#app');
    </script>
  </body>
</html>

(4)总结

v-bind,前端Vue,vue.js,javascript,前端

 (5)绑定class介绍(重要)

最基本的绑定:

v-bind,前端Vue,vue.js,javascript,前端

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div id="app">
      <h2 :class="classes">Hello World</h2>
    </div>
    <script src="../lib/vue.js"></script>

    <script>
      const app = Vue.createApp({
        // data: option api
        data: function () {
          return {
            classes: 'abc cba nba',
          };
        },
      });

      app.mount('#app');
    </script>
  </body>
</html>

v-bind,前端Vue,vue.js,javascript,前端

这时候我们来个需求,下方有个按钮,点击之后变成红色,再点击之后红色变成黑色。

v-bind,前端Vue,vue.js,javascript,前端直接上代码

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .active {
        color: red;
      }
    </style>
  </head>
  <body>
    <div id="app">
      <!-- 1. 基本绑定class-->
      <h2 :class="classes">Hello World</h2>

      <!-- 2.1 对象语法的基本使用  -->
      <button :class="{active: isActive}" @click="btnClick">我是按钮</button>

      <!-- 2.2 对象语法的多个键值对  -->
      <button :class="{active: isActive, kobe:false}" @click="btnClick">我是按钮</button>

      <!-- 2.3 动态绑定class可以写对象语法  -->
      <button :class="{active: isActive}" @click="btnClick">我是按钮</button>

      <!-- 2.3   动态绑定的class是可以和普通的class并列使用的  -->
      <button class="abc cba" :class="{active: isActive}" @click="btnClick">我是按钮</button>
      <h2></h2>
    </div>
    <script src="../lib/vue.js"></script>

    <script>
      const app = Vue.createApp({
        // data: option api
        data: function () {
          return {
            classes: 'abc cba nba',
            isActive: false,
          };
        },
        methods: {
          btnClick: function () {
            this.isActive = !this.isActive;
          },
        },
      });

      app.mount('#app');
    </script>
  </body>
</html>

v-bind,前端Vue,vue.js,javascript,前端

那大家看现在这个是不是一个对象?我们是不是可以把这整个对象抽取出去?

v-bind,前端Vue,vue.js,javascript,前端

v-bind,前端Vue,vue.js,javascript,前端

上面讲述好几种使用场景,目前我们只要知道这一点就好: 

# {active: isActive, kobe:false} 键值对的值必须要是布尔类型,来决定前面的class(key)是否要绑定过来-->
<button :class="{active: isActive, kobe:false}" @click="btnClick">

还有数组语法介绍一下(了解):  

v-bind,前端Vue,vue.js,javascript,前端 点击看下效果:

 v-bind,前端Vue,vue.js,javascript,前端

 文章来源地址https://www.toymoban.com/news/detail-719719.html

 

 

 (6)绑定style介绍

style中的某些值,来自data中,值是动态的,不是写死的。那我们该怎么绑定呢?现在这么做,肯定是没实现效果的。

v-bind,前端Vue,vue.js,javascript,前端

v-bind,前端Vue,vue.js,javascript,前端 我们添加绑定style发现还是不行,该怎么办呢?

v-bind,前端Vue,vue.js,javascript,前端

 

其实我们可以把他放到对象里面, 之间用逗号来分割。但是有个key是font-size,在js语法里,“-”符号是不会把他当做一个整体来着的。所以我们得给他加个单引号。‘30px’也是的,需要加一个引号。

v-bind,前端Vue,vue.js,javascript,前端

v-bind,前端Vue,vue.js,javascript,前端 

v-bind,前端Vue,vue.js,javascript,前端 

如果不这样子写 其实也可以写成驼峰命名,写成驼峰的话也是能够正常的解析的:

v-bind,前端Vue,vue.js,javascript,前端 

如果font-size的值也是来自data,如果fontSize写的30,那我们在style里面就得拼接字符串。如果fontSize直接写的'30px',那就不用去拼接字符串。

v-bind,前端Vue,vue.js,javascript,前端 

 

写好之后我们来看下效果。是不是绑定style啦。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div id="app">
      <!-- 1. 普通的html写法 -->
      <h2 style="color: red; font-size: 30px">哈哈哈哈</h2>

      <!-- 2. style中的某些值,来自data中 -->
      <!-- 2.1 动态绑定style,在后面需要跟上一个对象类型 -->
      <h2 v-bind:style="{ color: fontColor, 'font-size': '30px' }">
        哈哈哈哈2.1
      </h2>

      <!-- 2.2 30px如果也是取自data -->
      <h2 v-bind:style="{ color: fontColor, fontSize: fontSize + 'px'}">
        哈哈哈哈2.2
      </h2>

      <!-- 2.3 动态的绑定属性,这个属性是一个对象 -->
      <h2 v-bind:style="objStyle">哈哈哈哈2.3</h2>

      <!-- 3. style的数组语法 -->
      <h2 :style="[objStyle, { backgroundColor: 'purple' }]">嘿嘿嘿</h2>
    </div>
    <script src="../lib/vue.js"></script>

    <script>
      const app = Vue.createApp({
        // data: option api
        data: function () {
          console.log(this);
          return {
            fontColor: 'blue',
            fontSize: 30,
            objStyle: { color: 'red', 'font-size': '30px' },
          };
        },
      });

      app.mount('#app');

      // const obj = {
      //   'font-size': '30px',
      //   fontSize: '30px',
      // };
    </script>
  </body>
</html>

 v-bind,前端Vue,vue.js,javascript,前端

v-bind,前端Vue,vue.js,javascript,前端 

(7)动态绑定属性

v-bind,前端Vue,vue.js,javascript,前端 

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div id="app">
      <!-- <h2 class="" style="" style=""></h2> -->
      <h2 :[name]="'aaaa'">你好鸭赛丽亚</h2>
    </div>
    <script src="../lib/vue.js"></script>

    <script>
      const app = Vue.createApp({
        // data: option api
        data: function () {
          return {
            name: 'title',
          }
        },
      })

      app.mount('#app')
    </script>
  </body>
</html>

v-bind,前端Vue,vue.js,javascript,前端 

(8)绑定一个对象(必须掌握)

我希望把props绑定在h2那个元素上面。

v-bind,前端Vue,vue.js,javascript,前端 

希望能实现这种效果,那这种情况我们该怎么去做?

<div id="app">
    <h2 name="why" age="18" height="1.88">Hello World</h2>
</div>

以前我们是咋实现的?挨个去写 

v-bind,前端Vue,vue.js,javascript,前端

 这样子手写是不是有点太麻烦了。

我们可以这么写, v-bind后面直接跟一个对象,会自动遍历这个对象里面所有的属性,并且添加到这个h2的元素上面。 

v-bind,前端Vue,vue.js,javascript,前端

 v-bind,前端Vue,vue.js,javascript,前端

 

 

到了这里,关于五、vue基础-指令之v-bind的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue基础 - v-bind修改属性

    div id=\\\"app\\\" label for=\\\"r1\\\"修改颜色/labelinput type=\\\"checkbox\\\" v-model=\\\"use\\\" id=\\\"r1\\\" brbr div v-bind:class=\\\"{\\\'class1\\\': use}\\\"    !--如果use为true,则{\\\'class1\\\': use}=class1,否则为空-- v-bind:class 指令 /div /div script new Vue({ el: \\\'#app\\\', data:{     use: false    //这里赋值为false,所以没有调用class1 } }); /script

    2024年01月23日
    浏览(60)
  • Js:apply/call/bind、作用域/闭包、this指向(普通,箭头,JS/Vue的this)

    共同点: apply()、call() 和 bind() 方法 三者作用都是 改变this指向。 接收的第一个参数都是this要指向的对象 区别: apply只有两个参数,第二个参数为数组; call和bind传参相同,多个参数依次传入的; call和apply都是对函数进行直接调用(立即执行),而bind方法不会立即调用函数

    2023年04月08日
    浏览(94)
  • 前端Vue入门-day01-初识vue与vue指令

    -(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 Vue 快速上手 Vue 概念 创建实例   插值表达式 响应式特性 开发者工具  Vue 指令  v-show  v-if  v-else  v-else-if  v-on v-bind  v-for key  v-model  概念:Vue 是一个用于 构建用户

    2024年02月09日
    浏览(47)
  • Vue.js 2.0 自定义指令

    除了默认设置的核心指令( v-model 和 v-show ),Vue 也允许注册自定义指令。注意,在 Vue2.0 里面,代码复用的主要形式和抽象是组件——然而,有的情况下,你仍然需要对纯 DOM 元素进行底层操作,这时候就会用到自定义指令。下面这个例子将聚焦一个 input 元素,像这样: 当页面

    2023年04月19日
    浏览(53)
  • JavaScript - 判断当前时间是否在指定区间内,例如:9:00~12:00(检查当前时间是否处于规定的两个时间段范围内),适用于 vue.js / uniapp / 微信小程序等前端项目

    例如,您想知道当前时间是否处于 9:00 ~ 12:00 时间区间内,然后根据这个判断进而实现业务逻辑。 如下示例所示, 本文提供一个函数,您只需要传入 2 个时间区间,便可得出当前时间是否在该时间区间范围内: 您可以一键复制,直接粘贴到您的项目中。 您只需要传入开始时

    2024年02月16日
    浏览(63)
  • 前端框架学习 Vue (1) 概念,常用指令

            Vue是一个用于 构建用户界面 的 渐进式 框架         1.构建用户界面 :基于数据动态渲染页面                       2.渐进式: 循序渐进的学习(学一点就能用一点)                  (1)Vue核心包开发                         场景:局部模块改造          

    2024年01月22日
    浏览(43)
  • 前端学习---vue2--指令修饰符详解

    写在前面: 前端感觉系统学起来还行,我也不晓得我是咋快速入门1个月就开始看实习公司代码的。然后现在开始系统复习,然后感觉有的封装的还可以,不过就是我不晓得,像这个指令修饰符,其实说逻辑难写,倒是也没有,就是简单不用自己写. 就像后端判断字符串是否为

    2024年02月14日
    浏览(34)
  • 〖大前端 - 基础入门三大核心之JS篇㉓〗- JavaScript 的「数组」

    当前子专栏 基础入门三大核心篇 是免费开放阶段 。 推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 大前端全栈架构白宝书专栏, 目前阶段免费开放 , 购买任意白宝书体系化专栏可加入 TFS-CLUB 私域社区。 福利:除了通过订阅\\\"白宝书系列专

    2024年02月04日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包