当前位置: 首页 > Web前端 > HTML5

Vue的v-bind指令的.prop事件修饰符详解2.x

时间:2023-04-05 19:14:21 HTML5

vue官方文档对.prop修饰符的解释为:使用示例:那么,具体的原理和用法是怎样的呢?这是从html的DOM节点开始的。在html标签中,我们可以定义各种属性。浏览器解析DOM树渲染页面后,每个标签都会生成对应的DOM节点。一个节点是一个对象,所以它会包含一些属性,属性也是属性之一。DefineProperty:节点对象存放在内存中的属性,可以访问和设置。Attribute:节点对象的属性(property)之一,值为一个对象,可以通过点访问方式document.getElementById('xx').attributes或document.getElementById('xx').getAttributes读取('xx'),通过document.getElementById('xx').setAttribute('xx',value)添加修改。标签中定义的所有属性,包括HTML属性和自定义属性,都将作为键值对存在于属性对象中。示例:打印属性对象(NamedNodeMap对象表示元素属性节点的无序集合):Property和Attribute的区别1.Attribute对象包含标签中定义的所有属性,而Property只包含HTML标准属性,不包含自定义属性(例如:data-xxx)。2、Attribute中属性的值是html标签上的原始值,除非使用setAttribute()方法改变,否则不会根据用户输入(eg:input标签)改变。Property会在页面初始化的时候在Attribute对象中映射创建标准属性,使得节点对象可以通过对象访问的方式获取标准属性。原始值被用户输入修改后,Property中对应的属性也会随之改变。即查看原始值使用属性,查看最新值使用属性。(input的值也可以通过input.defaultValue查看原始值)??3、Property和Attribute的一些属性名是完全一样的,比如ref,id;有些名称略有不同,例如Attribute中的for和class属性映射对应Property中的htmlFor和className;有些属性名称相同,但属性值会被限制或修改,不会完全相同。相关属性包括src、href、disabled、multiple等。示例://input.src://input.attributes.src.value:4.由于Property不能读取自定义属性,如果tag开头是标准属性,定义了非标准范围内的值,Property会默认选择标准值代替,导致与Attribute中的属性不完全相等。例子://input.type==='text'//input.attributes.type==='foo'PropertyandAttribute各自的属性和Method属性:http://www.w3school.com.cn/js...属性:http://www.w3school.com.cn/js....prop修饰目的v-bind默认绑定到DOM属性上节点的,使用.prop修饰符后,会绑定到属性上注意:使用属性获取最新值;attribute设置的自定义属性会显示在渲染的HTML标签中,property不会。修饰符用途:通过自定义属性存储变量,避免暴露数据,防止HTML结构污染例如://标签结构://input.data===undefined//input.attributes.data===this.inputData//标签结构://input.data===this.inputData//input.attributes.data===undefined