如何理解vue中的v-bind?

线结构光三维重建(二):光平面标定与激光轮廓提取的实战优化 本文深入探讨了线结构光三维重建中的光平面标定与激光轮廓提取两大核心环节的实战优化。详细介绍了从棋盘格标定板法到自动化高鲁棒性标定的流程优化,并分享了针对复杂工业场景(如低对比度、高反光表面)的激光轮廓提取组合策略,旨在提升三维重建系统的整体精度与稳定性。 阅读详情

在这里插入图片描述

如果你写过vue,对v-bind这个指令一定不陌生。
下面我将从源码层面去带大家剖析一下v-bind背后的原理。

会从以下几个方面去探索:

  • v-bind关键源码分析
    • v-bind化的属性统一存储在哪里:attrsMap与attrsList
    • 绑定属性获取函数 getBindingAttr 和 属性操作函数 getAndRemoveAttr
  • v-bind如何处理不同的绑定属性
    • v-bind:key源码分析
    • v-bind:title源码分析
    • v-bind:class源码分析
    • v-bind:style源码分析
    • v-bind:text-content.prop源码分析
    • v-bind的修饰符.camel .sync源码分析

v-bind关键源码分析

v-bind化的属性统一存储在哪里:attrsMap与attrsList
<p v-bind:title="vBindTitle"></p>

假设为p标签v-bind化了title属性,我们来分析title属性在vue中是如何被处理的。

vue在拿到这个html标签之后,处理title属性,会做以下几步:

  • 解析HTML,解析出属性集合attrs,在start回调中返回
  • 在start回调中创建ASTElement,createASTElement(... ,attrs, ...)
  • 创建后ASTElement会生成attrsList和attrsMap

至于创建之后是如何处理v-bind:title这种普通的属性值的,可以在下文的v-bind:src源码分析中一探究竟。

解析HTML,解析出属性集合attrs,在start回调中返回
  function handleStartTag (match) {
    ...
    const l = match.attrs.length
    const attrs = new Array(l)
    for (let i = 0; i < l; i++) {
      const args = match.attrs[i]
      ...
      attrs[i] = {
        name: args[1],
        value: decodeAttr(value, shouldDecodeNewlines)
      }
    }
   ...
    if (options.start) {
      // 在这里上传到start函数
      options.start(tagName, attrs, unary, match.start, match.end)
    }
  }
在start回调中创建ASTElement,createASTElement(... ,attrs, ...)
// 解析HMTL
parseHTML(template, {
    ...
    start(tag, attrs, unary, start, end) {
        let element: ASTElement = createASTElement(tag, attrs, currentParent) // 注意此处的attrs
    }
})
创建后ASTElement会生成attrsList和attrsMap
// 创建AST元素
export function createASTElement (
  tag: string,
  attrs: Array<ASTAttr>, // 属性对象数组
  parent: ASTElement | void // 父元素也是ASTElement
): ASTElement { // 返回的也是ASTElement
  return {
    type: 1,
    tag,
    attrsList: attrs,
    attrsMap: makeAttrsMap(attrs),
    rawAttrsMap: {},
    parent,
    children: []
  }
}
attrs的数据类型定义
// 声明一个ASTAttr 属性抽象语法树对象 数据类型
declare type ASTAttr = {
  name: string; // 属性名
  value: any; // 属性值
  dynamic?: boolean; // 是否是动态属性
  start?: number;
  end?: number
};
绑定属性获取函数 getBindingAttr 和 属性操作函数 getAndRemoveAttr

getBindingAttr及其子函数getAndRemoveAttr在处理特定场景下的v-bind十分有用,也就是”v-bind如何处理不同的绑定属性“章节很有用。
这里将其列举出来供下文v-bind:key源码分析;v-bind:src源码分析;v-bind:class源码分析;v-bind:style源码分析;v-bind:dataset.prop源码分析源码分析参照。

export function getBindingAttr (
  el: ASTElement,
  name: string,
  getStatic?: boolean
): ?string {
  const dynamicValue =
    getAndRemoveAttr(el, ':' + name) ||
    getAndRemoveAttr(el, 'v-bind:' + name)
  if (dynamicValue != null) {
    return parseFilters(dynamicValue)
  } else if (getStatic !== false) {
    const staticValue = getAndRemoveAttr(el, name)
    if (staticValue != null) {
      return JSON.stringify(staticValue)
    }
  }
}
// note: this only removes the attr from the Array (attrsList) so that it
// doesn't get processed by processAttrs.
// By default it does NOT remove it from the map (attrsMap) because the map is
// needed during codegen.
export function getAndRemoveAttr (
  el: ASTElement,
  name: string,
  removeFromMap?: boolean
): ?string {
  let val
  if ((val = el.attrsMap[name]) != null) {
    const list = el.attrsList
    for (let i = 0, l = list.length; i < l; i++) {
      if (list[i].name === name) {
        list.splice(i, 1) // 从attrsList删除一个属性,不会从attrsMap删除
        break
      }
    }
  }
  if (removeFromMap) {
    delete el.attrsMap[name]
  }
  return val
}

如何获取v-bind的值

以下面代码为例从源码分析vue是如何获取v-bind的值。

会从记下几个场景去分析:

  • 常见的key属性
  • 绑定一个普通html attribute:title
  • 绑定class和style
  • 绑定一个html DOM property:textContent
vBind:{
    key: +new Date(),
    title: "This is a HTML attribute v-bind",
    class: "{ borderRadius: isBorderRadius }"
    style: "{ minHeight: 100 + 'px' , maxHeight}"
    text-content: "hello vue v-bind"
}
<div
   v-bind:key="vBind.key"
   v-bind:title="vBind.title"
   v-bind:class="vBind.class"
   v-bind:style="vBind.style"
   v-bind:text-content.prop="vBind.textContent"
 />
</div>
v-bind:key源码分析
function processKey (el) {
  const exp = getBindingAttr(el, 'key')
   if(exp){
      ...
      el.key = exp;
   }
}

processKey函数中用到了getBindingAttr函数,由于我们用的是v-bind,没有用:,所以const dynamicValue = getAndRemoveAttr(el, 'v-bind:'+'key');,getAndRemoveAttr(el, ‘v-bind:key’)函数到attrsMap中判断是否存在’v-bind:key’,取这个属性的值赋为val并从从attrsList删除,但是不会从attrsMap删除,最后将’v-bind:key’的值,也就是val作为dynamicValue,之后再返回解析过滤后的结果,最后将结果set为processKey中将元素的key property。然后存储在segments中,至于segments是什么,在上面的源码中可以看到。

v-bind:title源码分析

title是一种“非vue特殊的”也就是普通的HTML attribute。

function processAttrs(el){
     const list = el.attrsList;
     ...
     if (bindRE.test(name)) { // v-bind
        name = name.replace(bindRE, '')
        value = parseFilters(value)
        ...
        addAttr(el, name, value, list[i], ...)
      }
}
export const bindRE = /^:|^\.|^v-bind:/
export function addAttr (el: ASTElement, name: string, value: any, range?: Range, dynamic?: boolean) {
  const attrs = dynamic
    ? (el.dynamicAttrs || (el.dynamicAttrs = []))
    : (el.attrs || (el.attrs = []))
  attrs.push(rangeSetItem({ name, value, dynamic }, range))
  el.plain = false
}

通过阅读源码我们看出:对于原生的属性,比如title这样的属性,vue会首先解析出name和value,然后再进行一系列的是否有modifiers的判断(modifier的部分在下文中会详细讲解),最终向更新ASTElement的attrs,从而attrsList和attrsMap也同步更新。

v-bind:class源码分析

css的class在前端开发的展现层面,是非常重要的一层。
因此vue在对于class属性也做了很多特殊的处理。

function transformNode (el: ASTElement, options: CompilerOptions) {
  const warn = options.warn || baseWarn
  const staticClass = getAndRemoveAttr(el, 'class')
  if (staticClass) {
    el.staticClass = JSON.stringify(staticClass)
  }
  const classBinding = getBindingAttr(el, 'class', false /* getStatic */)
  if (classBinding) {
    el.classBinding = classBinding
  }
}

在transfromNode函数中,会通过getAndRemoveAttr得到静态class,也就是class="foo";在getBindingAttr得到绑定的class,也就是v-bind:class="vBind.class"即v-bind:class="{ borderRadius: isBorderRadius }",将ASTElement的classBinding赋值为我们绑定的属性供后续使用。

v-bind:style源码分析

style是直接操作样式的优先级仅次于important,比class更加直观的操作样式的一个HTML attribute。
vue对这个属性也做了特殊的处理。

function transformNode (el: ASTElement, options: CompilerOptions) {
  const warn = options.warn || baseWarn
  const staticStyle = getAndRemoveAttr(el, 'style')
  if (staticStyle) {
    el.staticStyle = JSON.stringify(parseStyleText(staticStyle))
  }
  const styleBinding = getBindingAttr(el, 'style', false /* getStatic */)
  if (styleBinding) {
    el.styleBinding = styleBinding
  }
}

在transfromNode函数中,会通过getAndRemoveAttr得到静态style,也就是style="{fontSize: '12px'}";在getBindingAttr得到绑定的style,也就是v-bind:style="vBind.style"即v-bind:class={ minHeight: 100 + 'px' , maxHeight}",其中maxHeight是一个变量,将ASTElement的styleBinding赋值为我们绑定的属性供后续使用。

v-bind:text-content.prop源码分析

textContent是DOM对象的原生属性,所以可以通过prop进行标识。
如果我们想对某个DOM prop直接通过vue进行set,可以在DOM节点上做修改。

下面我们来看源码。

function processAttrs (el) {
  const list = el.attrsList
  ...
  if (bindRE.test(name)) { // v-bind
      if (modifiers) {
          if (modifiers.prop && !isDynamic) {
            name = camelize(name)
            if (name === 'innerHtml') name = 'innerHTML'
          }
       }
       if (modifiers && modifiers.prop) {
          addProp(el, name, value, list[i], isDynamic)
        }
   }
}
export function addProp (el: ASTElement, name: string, value: string, range?: Range, dynamic?: boolean) {
  (el.props || (el.props = [])).push(rangeSetItem({ name, value, dynamic }, range))
  el.plain = false
}
props?: Array<ASTAttr>;

通过上面的源码我们可以看出,v-bind:text-content.prop中的text-content首先被驼峰化为textContent(这是因为DOM property都是驼峰的格式),vue还对innerHtml错误写法做了兼容也是有心,之后再通过prop标识符,将textContent属性增加到ASTElement的props中,而这里的props本质上也是一个ASTAttr。

有一个很值得思考的问题:为什么要这么做?与HTML attribute有何异同?

  • 没有HTML attribute可以直接修改DOM的文本内容,所以需要单独去标识
  • 比通过js去手动更新DOM的文本节点更加快捷,省去了查询dom然后替换文本内容的步骤
  • 在标签上即可看到我们对哪个属性进行了v-bind,非常直观
  • 其实v-bind:title可以理解为v-bind:title.attr,v-bind:text-content.prop只不过vue默许不加修饰符的就是HTML attribute罢了
v-bind的修饰符.camel .sync源码分析

.camel仅仅是驼峰化,很简单。
但是.sync就不是这么简单了,它会扩展成一个更新父组件绑定值的v-on侦听器。

其实刚开始看到这个.sync修饰符我是一脸懵逼的,但是仔细阅读一下组件的.sync再结合实际工作,就会发现它的强大了。

<Parent
  v-bind:foo="parent.foo"
  v-on:updateFoo="parent.foo = $event"
></Parent>

在vue中,父组件向子组件传递的props是无法被子组件直接通过this.props.foo = newFoo去修改的。
除非我们在组件this.$emit("updateFoo", newFoo),然后在父组件使用v-on做事件监听updateFoo事件。若是想要可读性更好,可以在$emit的name上改为update:foo,然后v-on:update:foo。

有没有一种更加简洁的写法呢???
那就是我们这里的.sync操作符。
可以简写为:

<Parent v-bind:foo.sync="parent.foo"></Parent>

然后在子组件通过this.$emit("update:foo", newFoo);去触发,注意这里的事件名必须是update:xxx的格式,因为在vue的源码中,使用.sync修饰符的属性,会自定生成一个v-on:update:xxx的监听。

下面我们来看源码:

if (modifiers.camel && !isDynamic) {
  name = camelize(name)
}
if (modifiers.sync) {
  syncGen = genAssignmentCode(value, `$event`)
  if (!isDynamic) {
    addHandler(el,`update:${camelize(name)}`,syncGen,null,false,warn,list[i]) 
   // Hyphenate是连字符化函数,其中camelize是驼峰化函数
    if (hyphenate(name) !== camelize(name)) {
      addHandler(el,`update:${hyphenate(name)}`,syncGen,null,false,warn,list[i])
    }
  } else {
    // handler w/ dynamic event name
    addHandler(el,`"update:"+(${name})`,syncGen,null,false,warn,list[i],true)
  }
}

通过阅读源码我们可以看到:
对于v-bind:foo.sync的属性,vue会判断属性是否为动态属性。
若不是动态属性,首先为其增加驼峰化后的监听,然后再为其增加一个连字符的监听,例如v-bind:foo-bar.sync,首先v-on:update:fooBar,然后v-on:update:foo-bar。v-on监听是通过addHandler加上的。
若是动态属性,就不驼峰化也不连字符化了,通过addHandler(el,update:${name}, ...),老老实实监听那个动态属性的事件。

一句话概括.sync:
.sync是一个语法糖,简化v-bind和v-on为v-bind.sync和this.$emit(‘update:xxx’)。为我们提供了一种子组件快捷更新父组件数据的方式。

参考资料:

  • https://cn.vuejs.org/v2/api/#v-bind
  • https://github.com/vuejs/vue/tree/dev/src
  • https://cn.vuejs.org/v2/guide/components-custom-events.html#sync-%E4%BF%AE%E9%A5%B0%E7%AC%A6
数控系统(CNC)系列:Hurco VMX42SR_(3).控制系统硬件组成部分 控制箱是CNC系统的核心部分,负责处理所有的控制指令和数据。它通常包含主控板、电源模块、接口板等关键组件。伺服驱动器是CNC系统中的关键组件,负责将主控板发出的控制信号转换为电机所需的驱动电流。它通过闭环控制确保电机的精确运动。电机是CNC系统中的执行机构,负责实现主控板发出的运动指令。常见的电机类型包括步进电机和伺服电机。传感器是CNC系统中的重要组件,用于检测和反馈机床的运行状态。常见的传感器类型包括位置传感器、速度传感器、温度传感器等。电源供应系统为CNC系统的所有组件提供电力。主电源。 阅读详情

相关推荐

spoon工具的常用基础操作

先创建一个作业,这个作业流程,包括进行设置变量转换,查询结果输出转换,方便后续循环。整个流程写完后,执行作业5_执行整个流程,成功后,可以在数据库查看结果。,新建一个转换,excel表输入然后复制记录到结果,保存转换文件。这三个用户下 都有一张emp表 分别是 三个部门的用户信息。,新建一个数据库连接,变量命名用户名和密码。成功执行后,可以到保存的excel位置进行查看。emp表输入,可以进行预览查看数据有没有过来。输出到一直excel表,运行结果输出。,新建一个转换,拖拽。

qq_43583887的博客 5831

v-bind用法详解

你真的了解v-bind吗?看完这篇文章你会对v-bind的更多用法有所了解。

qq_61233877的博客 1万+

FPGA_adc采样并通过以太网发送到上位机

本项目使用FPGA-ZYNQ-7020采集8通道ADC数据,通过以太网上传到上位机显示波形PL部分包括数据的获取与处理,数据从PL传递到PSPS部分包括以太网的发送,由PL到PS的中断触发本文章不详细讲解背后原理 但保证每一步足够详细,跟着就能实现。本人FPGA平台 大磊FPGA7020开发板 vivado2020.2 vitis2020.2 匿名上位机公开版

weixin_42304868的博客 5626

v-bind相关知识

v-bind相关知识

FGGIT的博客 378

Windows应急响应实战:灰鸽子木马检测与清除全流程解析

远程控制木马(RAT)是一种基于客户端/服务器(C/S)架构的恶意软件,攻击者通过它能够远程操控受害主机,实现屏幕监控、文件窃取、键盘记录等操作,对个人隐私与企业数据安全构成严重威胁。其技术原理通常涉及进程注入、网络通信、持久化机制等核心环节,在应急响应中具有极高的分析价值。掌握此类木马的检测与清除方法,是Windows系统安全防护与事件处置的基本功。本文以经典的灰鸽子木马为例,结合进程分析、网络排查、注册表检查等实战技术,系统讲解从行为识别、痕迹取证到彻底清除的完整操作流程,并涵盖Rootkit对抗、无文

weixin_30521161的博客 414

【VSCode】【Clangd】从零构建:基于LLVM/Clangd+MINGW+CMake的Windows高性能C/C++开发环境实战

本文详细介绍了如何在Windows平台搭建基于LLVM/Clangd+MINGW+CMake的高性能C/C++开发环境。通过VSCode配置Clangd语言服务器,结合MINGW提供的GCC工具链和CMake的跨平台构建能力,实现轻量级、高效率的开发体验。文章包含从环境准备到实战配置的完整指南,特别适合追求开发效率和跨平台兼容性的开发者。

weixin_28839629的博客 311

从源码看vue(v2.7.10)中的v-bind的原理

前面我们分析了v-model的原理,接下来我们看看v-bind的实现又是怎样的呢?

qq_35094120的博客 1128

FDTD仿真实战:从材料导入到反射率曲线分析

本文提供了一份完整的FDTD仿真实战指南,详细讲解了从自定义材料(如WO3)数据导入、结构建模、仿真区域与网格设置,到光源与监视器配置、运行仿真并提取反射率数据的全流程。重点解决了材料库缺失、网格优化、边界条件设置等常见难题,旨在帮助研究人员高效、准确地通过FDTD仿真获取材料的关键光学特性——反射率曲线。

elastic6hunter的博客 341

v-bind详解与常见用法

你真的了解v-bind吗

m0_63005501的博客 1万+

luks-磁盘加密工具

linux磁盘加密配置工具及步骤详解

zdd56789的博客 120

AI颠覆市场调研:生成式智能体如何重构商业决策?

AI正在将市场调研从"成本中心"转变为"战略武器"。当企业能够用生成式智能体实时模拟百万级虚拟用户时,传统调研的样本偏差、时间滞后、成本高昂等问题将不复存在。对于开发者而言,这不仅是技术的狂欢,更是参与商业规则重构的历史机遇。行动建议立即体验Simile/Aaru的智能体平台,验证虚拟样本效果参与LLM持续性记忆架构的开源项目(如Memory Llama)关注AI调研API的标准化进程(如Hugging Face的Market Research Toolkit)

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 614

Vue.js 源码分析(十五) 指令篇 v-bind指令详解

指令是Vue.js模板中最常用的一项功能,它带有前缀v-,比如上面说的v-if、v-html、v-pre等。指令的主要职责就是当其表达式的值改变时,相应的将某些行为应用到DOM上,先介绍v-bind指令 v-bind用于动态地绑定一个或多个特性,或一个组件 prop 到表达式。 例如: <!DOCTYPE html> <html lang="en"> <...

weixin_30312563的博客 391

基于STM32单片机设计的智能坐垫_431

本文设计了一款基于STM32F103C8T6单片机的智能坐垫系统,该系统集成了压力传感器、SHT30温湿度传感器、薄膜加热垫、涡轮风机、语音播报模块、OLED显示屏及HC-05蓝牙模块,实现了对用户就坐状态与坐垫微环境的实时监测与智能调控。系统通过压力传感器检测用户就坐情况,自动启动久坐计时并触发语音提醒;温湿度数据用于控制通风与加热功能,以改善座椅舒适性;用户可通过按键或手机APP设置久坐时长、手动开关通风与加热,并通过OLED屏或APP实时查看环境参数与计时状态。本设计体现了嵌入式系统在健康关怀与舒适性

409

理解vue中的v-bind

如何理解vue中的v-bind? - 知乎

u012632105的博客 445

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

关于vue.js v-bind 的一些理解和思考

一、v-bind 初探 它是一个 vue 指令,用于绑定 html 属性,如下: ? 1 2 3 4 5 6 7 8 9 10 html属性不能使用双大括号形式绑定,只能使用v-bind指令 …… var vm = new Vue({ el: ‘#app’, data: { title: ‘title content’ } }); 这里的 html ...

343

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

vue v bind html,vue.js - v-bind 的一些理解和思考

一、v-bind 初探它是一个 vue 指令,用于绑定 html 属性,如下:html属性不能使用双大括号形式绑定,只能使用v-bind指令......var vm = new Vue({el: '#app',data: {title: 'title content'}});这里的 html 最后会渲染成:html属性不能使用双大括号形式绑定,只能使用v-bind指令二、指令预期值上面这种 v-b...

weixin_35129495的博客 357

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【vue】v-bind=“$attrs“理解与使用

主要针对v-bind="$attrs"理解与使用

qq_45796592的博客 1397

【vue-1】深入理解 Vue3 中的 v-bind 指令

Vue3中的v-bind指令全面解析:新特性、用法与优化技巧 摘要:本文深入探讨Vue3中的v-bind指令,这一核心功能在保持基础特性的同时获得了多项增强。文章系统介绍了v-bind的基本语法、Vue3新增特性(如多值绑定、CSS变量集成和更好的TypeScript支持),详细讲解了class/style绑定、props传递等常见用法,并分享了高级技巧和性能优化方法。同时针对null/undefined值处理、布尔属性等常见问题提供了解决方案,帮助开发者全面掌握这一实现数据到视图单向绑定的重要指令。

weixin_39033358的博客 1444

vue深入理解v-bind指令

v-bind入门 &lt;span :text="content"&gt;使用&lt;/span&gt; 会渲染成如下: &lt;span text="content"&gt;使用&lt;/span&gt; 字符串拼接 &lt;span :text=' "we" + 1 '&gt;使用&lt;/span&gt; 会渲染成: &amp

博客 1万+

vue中 v-bind=“$props“和v-bind=“$attrs“的理解和使用方式

vue中 v-bind=“$props“和v-bind=“$attrs“的理解和使用方式

Define_best的博客 6210

vue.jsv-html,关于vue.js v-bind 的一些理解和思考,vue.jsv-bind

关于vue.js v-bind 的一些理解和思考,vue.jsv-bind一、v-bind 初探它是一个 vue 指令,用于绑定 html 属性,如下:html属性不能使用双大括号形式绑定,只能使用v-bind指令......var vm = new Vue({el: '#app',data: {title: 'title content'}});这里的 html 最后会渲染成:html属性不能使...

weixin_42463736的博客 311

vue中v-model、v-bind、$root、axios的说明和深入理解

vue中最显著的特点就是响应式和数据的绑定 v-model会进行创建双向绑定进行更新和渲染,但是v-model本质上就是一个语法糖 对于双向绑定也就是说是mvvm数据的双向绑定:数据变化更新视图,视图变化更新数据;当然在vue中你需要双向绑定时对数据进行初始化的操作;说一下mvvm也就是model层到view层,view层到model层;数据进行同步变化 当然说的详细一点就是说v-model的绑定就是触发事件然后回填 就是通过$emit去进行回调 当然绑定的时候也会出现一点小问题;当出

lixu_boke的博客 684

vue.js - v-bind 的一些理解和思考

一、v-bind 初探它是一个 vue 指令,用于绑定 html 属性,如下:&lt;div id="app"&gt; &lt;p v-bind:title="title"&gt;html属性不能使用双大括号形式绑定,只能使用v-bind指令&lt;/p&gt; &lt;/div&gt; ...... var vm = new Vue({ el: '#app', data:...

冰雪为融的博客 559

vue.js v-bind指令的理解和思考

一、v-bind 初探 它是一个 vue 指令,用于绑定 html 属性,如下: &lt;div id="app"&gt; &lt;p v-bind:title="title"&gt;html属性不能使用双大括号形式绑定,只能使用v-bind指令&lt;/p&gt; &lt;/div&gt; ...... var vm = new Vue({ el: '#app', ...

一只小白奔向大牛的故事 236

vue3 v-bind=“$attrs“ 的一些理解,透传 Attributes相关说明及事例说明

vue3 透传 Attributes相关说明及事例说明

花花鱼的专栏 7683

vue.js代码初体验附理解v-bind图片加载

<!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>&l

张晨光老师的播客 592
上一篇: 如何理解vue的computed?
下一篇: 如何理解vue中的v-model?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

趁你还年轻233

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值