元素上使用v-bind绑定的data-index属性,可以用啥方式来获取index值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了元素上使用v-bind绑定的data-index属性,可以用啥方式来获取index值相关的知识,希望对你有一定的参考价值。

Vue是一套用于构建用户界面的渐进式框架,该框架被设计为可以自底向上逐层应用,与其他大型框架大为不同。该框架核心库只关注视图层,既易于上手,又能通过npm包管理器与第三方库整合。
一、什么是Vue?
官方给出的概念:Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的前端框架。
1、构建用户界面
用 vue 往 html 页面中填充数据,非常的方便
2、框架
框架是一套现成的解决方案,程序员若想使用只能遵守框架的规范,去编写自己的业务功能
学习 vue,就是在学习 vue 框架中规定的用法
vue 的指令、组件(是对 UI 结构的复用)、路由、Vuex、vue 组件库等都是框架的一部分
二、vue 的两个特性
1、数据驱动视图
概念
在使用了 vue 的页面中,vue 会监听数据的变化,从而自动重新渲染页面的结构 数据的变化会驱动视图自动更新
好处:程序员只管把数据维护好,那么页面结构会被 vue 自动渲染出来

2、双向数据绑定
概念
js 数据的变化,会被自动渲染到页面上 页面上表单采集的数据发生变化的时候,会被 vue 自动获取到,并更新到 js 数据中
开发者不再需要手动操作 DOM 元素,来获取表单元素最新的值
3、实现原理--MVVM
概念
MVVM 是 vue 实现数据驱动视图和双向数据绑定的核心原理。
MVVM 指的是 Model、View 和 ViewModel, 它把每个 HTML 页面都拆分成了这三个部分,如图所示:
在 MVVM 概念中:

Model 表示当前页面渲染时所依赖的数据源。
View 表示当前页面所渲染的 DOM 结构。
ViewModel 表示 vue 的实例,它是 MVVM 的核心。
工作原理
ViewModel 为 MVVM 的核心

它把当前页面的数据源(Model)和页面的结构(View)连接在了一起。

当数据源发生变化时,会被 ViewModel 监听到,VM 会根据最新的数据源自动更新页面的结构 当表单元素的值发生变化时,也会被 VM 监听到,VM 会把变化过后最新的值自动同步到 Model 数据源中
三、Vue的基本使用
步骤
① 导入 vue.js 的 script 脚本文件
② 在页面中声明一个将要被 vue 所控制的 DOM 区域
③ 创建 vm 实例对象(vue 实例对象)
如下图所示

四、指令
1.概念
指令(Directives)是 vue 为开发者提供的模板语法,用于辅助开发者渲染页面的基本结构
2.类型
vue 中的指令按照不同的用途可以分为如下 6 大类:

① 内容渲染指令
② 属性绑定指令
③ 事件绑定指令
④ 双向绑定指令
⑤ 条件渲染指令
⑥ 列表渲染指令
2.1 内容渲染指令
(1)v-text 指令
缺点:会覆盖元素内部原有的内容

(2) 插值表达式:只是内容的占位符,不会覆盖原有的内容
专门用来解决 v-text 会覆盖默认文本内容的问题

(3)v-html 指令的作用:可以把带有标签的字符串,渲染成真正的 HTML 内容
2.2 属性绑定指令
注意:插值表达式只能用在元素的内容节点中,不能用在元素的属性节点中!
使用 v-bind: 指令,为元素的属性动态绑定值;
简写是英文的 :
在使用 v-bind 属性绑定期间,如果绑定内容需要进行动态拼接,则字符串的外面应该包裹单引号,例如:
<div :title="'box' + index">这是一个 div</div>
加上: 后,“” 中的表达式都按照 js表达式编译,因此字符串类型数据要加上单引号

2.3 事件绑定指令
(1)v-on: 简写是 @

(2)通过 v-on 绑定的事件处理函数,需要在 methods 节点中进行声明

(3)语法格式为:

<button @click="add"></button>

methods:
add()
// 如果在方法中要修改 vue实例data 中的数据,可以通过 this 访问到
this.count += 1


(4)$event 的应用场景:如果默认的事件参数对象 e 被覆盖了,则可以手动传递一个$event。

(5)事件修饰符:
.prevent 阻止默认跳转行为

<a @click.prevent="xxx">链接</a>
.stop 组织冒泡

<button @click.stop="xxx">按钮</button>
.capture 以捕获模式触发当前的事件处理函数

.onece 绑定的事件只触发一次

.self 只有在event.target是当前元素自身时触发

(6)按键修饰符:
在监听键盘事件时,我们经常需要判断详细的按键。此时,可以为键盘相关的事件添加按键修饰符, 例如:

2.4 双向绑定指令
(1)v-model

data中的对象与绑定的输入框中的内容时刻保持一致

辅助开发者在不操作 DOM 的前提下,快速获取表单的数据

<div>
<input v-model="username" />
<input v-model="password" />
</div>

const vm = new Vue()
data:
username: '',
password: ''


(2) v-model 指令的修饰符

//.number 自动将用户的输入值转为数值类型
<input v-model.number="age" />

//.trim 自动过滤用户输入的首尾空白字符
<input v-model.trim="msg" />

//.lazy 在“change”时而非“input”时更新,类似“防抖”
<input v-model.lazy="msg" />

2.5 条件渲染指令
(1)v-show
原理:动态为元素添加或移除 display: none 样式,来实现元素的显示和隐藏

如果要频繁的切换元素的显示状态,用 v-show 性能会更好
(2)v-if
原理:每次动态创建或移除元素,实现元素的显示和隐藏

如果刚进入页面的时候,某些元素默认不需要被展示,而且后期这个元素很可能也不需要被展示出来,此时 v-if 性能更好
参考技术A Vue是一套用于构建用户界面的渐进式框架,该框架被设计为可以自底向上逐层应用,与其他大型框架大为不同。该框架核心库只关注视图层,既易于上手,又能通过npm包管理器与第三方库整合。
官方给出的概念:Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的前端框架。
参考技术B Vue是一套用于构建用户界面的渐进式框架,该框架被设计为可以自底向上逐层应用,与其他大型框架大为不同。该框架核心库只关注视图层,既易于上手,又能通过npm包管理器与第三方库整合。
官方给出的概念:Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的前端框架。
参考技术C Vue是一套用于构建用户界面的渐进式框架,该框架被设计为可以自底向上逐层应用,与其他大型框架大为不同。该框架核心库只关注视图层,既易于上手,又能通过npm包管理器与第三方库整合。
官方给出的概念:Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的前端框架
参考技术D Vue是一套用于构建用户界面的渐进式框架,该框架被设计为可以自底向上逐层应用,与其他大型框架大为不同。该框架核心库只关注视图层,既易于上手,又能通过npm包管理器与第三方库整合。

比较v-bind和v-model

简单来说,区别如下:
1.v-bind用来绑定数据和属性以及表达式,缩写为‘:‘
2.v-model使用在表单中,实现双向数据绑定的,在表单元素外使用不起作用

一、v-model

v-model多在表单中使用,在表单元素上创建双向绑定,根据控件类型选择正确的方法更新元素,可以绑定text、radio、checkbox、selected

1. 绑定text

<input type="text" v-model="val" />
<p> {{val}} </p>
技术分享图片

2. 绑定radio

<input type="radio" value="one" v-model="radioVal" />
<input type="radio" value="two" v-model="radioVal" />
<label for v-bind="radioval" />
技术分享图片

radioval的值随着选择单选框的值,会变成one 或者 two

3. 绑定checkBox

(1)单个勾选框,最终的值为逻辑值true和false

<input type="checkbox" v-model="checkVal"/>
<label for="checkbox">{{checkVal}}</label>
技术分享图片

(2)多个勾选框时,将值绑定到一个数组

<input type="checkbox" value="apple" v-model="checkArray"/>
<label for="checkbox">{{apple}}</label>

<input type="checkbox" value="banana" v-model="checkArray"/>
<label for="checkbox">{{banana}}</label>

<input type="checkbox" value="pear" v-model="checkArray"/>
<label for="checkbox">{{pear}}</label>

<span>{{checkArray | json}}</span>
技术分享图片

checkArray中的值会根据是否选中进行关联变化

4. 绑定select

(1)绑定到单个select
(2)绑定多个select时,同样适用数组

5. 增加参数

(1)lazy
将输入框的input事件改为change事件,使得输入框在change事件中更新而不是input
关于change事件和input事件的区别,简单说来是:
change事件必须是在输入框失去焦点之后才会触发,而input事件可以实时监测。

(2)number
将文本框输入的值都变为数字,如果是变为数字之后是NAN,则返回原始值

(3)debounce
给输入框加一个很小的延迟,设置一个最小的延时,在每次敲击之后延时同步输入框的值与数据。如果每次更新都要进行高耗操作(例如在输入提示中 Ajax 请求),它较为有用。
注意 debounce 参数不会延迟 input 事件:它延迟“写入”底层数据。因此在使用 debounce 时应当用 vm.$watch() 响应数据的变化。若想延迟 DOM 事件,应当使用 debounce 过滤器。


二、v-bind

1.绑定文本

直接用v-bind或者{{}}

<p v-bind="message"></p>
<p>{{message}}</p>
技术分享图片

2.绑定属性

<p v-bind:src="http://...."></p>
<p v-bind:class="http://...."></p>
<p v-bind:style="http://...."></p>
技术分享图片

3.绑定表达式

{{ number + 1 }}
{{ ok ? ‘YES‘ : ‘NO‘ }}
{{ message.split(‘‘).reverse().join(‘‘) }}
技术分享图片

4.绑定html

<div>{{{ raw_html }}}</div>
技术分享图片

这个时候必须要使用三个{}










以上是关于元素上使用v-bind绑定的data-index属性,可以用啥方式来获取index值的主要内容,如果未能解决你的问题,请参考以下文章

比较v-bind和v-model

vue 联动搜索

Vue - 使用 v-bind 和 props 对选择元素进行两种方式绑定

vue.js实战学习——v-bind 及class与 style绑定

5.7v-bind

如何利用Vue.js库中的v-bind绑定样式属性