Vue.js笔记-数据绑定

本文深入介绍了Vue.js模板的使用方法,包括文本插值、HTML特性绑定、表达式及过滤器的应用,以及指令的特性和使用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       Vue.js 的模板是基于 DOM 实现的。这意味着所有的 Vue.js 模板都是可解析的有效的 HTML,且通过一些特殊的特性做了增强。Vue 模板因而从根本上不同于基于字符串的模板。

插值

文本
      使用Mustache语法(双大括号)进行文本插值
       Mustache标签会被相应数据对象的msg属性的值替换,每当这个属性变化时它也会更新。也可以只处理单次插值,今后的数据变化就不会再引起插值更新了。
  1. <span>This will never change: {{* msg }}</span>
原始的HTML
        为了输出真的HTML字符串,需要用三Mustache标签。
  1. <div>{{{ raw_html }}}</div>
HTML特性
       Mustache标签也可以用在HTML特性内:
  1. <div id="item-{{ id }}"></div>
       在 Vue.js 指令和特殊特性内不能用插值。

绑定表达式

        放在Mustache标签内的文本称为绑定表达式,一段绑定表达式由一个简单的JavaScript表达式和一个可选的一个或多个过滤器构成。
JavaScript表达式
       只绑定到简单的属性键,支持全功能的JavaScript表达式,一个限制是每个绑定只能包含单个表达式,不能绑定语句和流程控制。
  1. {{ number + 1 }}
  2. {{ ok ? 'YES' : 'NO' }}
  3. {{ message.split('').reverse().join('') }}
过滤器
        在表达式后添加可选的过滤器Filter,以管道符指示。
        内置过滤器:
       filterBy过滤器 : 过滤器的值必须是一个数组,filterBy + 过滤条件。过滤条件是:‘string || function’ + in ‘optionKeyName’
       orderBy过滤器 : 过滤器的值必须是一个数组,orderBy + 过滤条件。过滤条件是:‘string || array ||function’ + ‘order ≥ 0 为升序 || order < 0 为降序’
       接下来,我们可以看下第二个例子:我们有一个商品数组products,我们希望遍历这个数组,并把他们打印成一张清单,这个用v-for很容易实现。
  1. <li v-for="product in products">
  2.       {{ product.name | capitalize }} - {{ product.price | currency }}
  3. </li>
       capitalize过滤器 : 将输入的字符串首字母转换成大写字母的过滤器。currency过滤器 : 将输入的数字转换成现金的过滤器。可以跟上货币符号(默认$)和保留的小数位(默认2)。
       利用上面的两个过滤器,能够很好的把一个json数组的商品清单格式化成通熟易懂的商品价格清单。
       如果只想要电器类商品,可以在v-for上加过滤条件:
  1. <li v-for="product in products | filterBy 'electronics' in 'category' ">
  2.       {{ product.name | capitalize }} - {{ product.price | currency }}
  3. </li>
       上面的例子,就是用filterBy 过滤在 'category'中含有'electronics' 关键字的列表,返回的列表就是只含有 'electronics' 关键字的列表。
如果想要多个搜索条件:
  1. <li v-for="product in products | filterBy 'electronics' in 'category'  'name' ">
  2.       {{ product.name | capitalize }} - {{ product.price | currency }}
  3. </li>
       上面的例子,就是用filterBy 过滤在 'category' 和 'name' 中含有'electronics' 关键字的列表。
最后我们还需要将这个列表用字母进行排序。我们可以在 filterBy 过滤器的基础上,链式调用orderBy 过滤器。
  1. <ul>
  2.        <li v-for="product in products
  3.                    | filterBy 'electronics' in 'category'
  4.                    | orderBy  'name' "
  5.        >
  6.             {{ product.name | capitalize }} - {{ product.price | currency }}
  7.       </li>
  8. </ul>
       orderBy 的排序方式默认是升序,如果想要降序,只需要加一个小于0的参数:
  1. <li v-for="product in products
  2.            | filterBy 'electronics' in 'category'
  3.            | orderBy  'name'  -1 "
  4. >
        自定义过滤器:
       使用Vue.filter()构造器,需要过滤器ID和过滤器函数两个参数。
       过滤器可以串联:{{ message | filterA | filterB }}
       过滤器也可以接受参数:{{ message | filterA 'arg1' arg2 }}
例子:输出打了五折之后的所有商品的清单列表
 例子2:任意折扣(Vue实例里构造我们的过滤器)
 指令
       指令是特殊的带有前缀v-的特性,指令的值限定为绑定表达式,指令的职责是当其表达式的值改变时把某些特殊的行为应用到DOM上
  1. <p v-if="greeting">Hello!</p>//v-if指令将根据表达式greeting值的真假 删除/插入<p>元素
       参数:有些指令可以在其名称后面带一个参数,中间放一个冒号隔开
  1. <a v-on:click="doSomething">
        修饰符:以半角句号.开始的特殊后缀,用于表示指令应当以特殊方式绑定,例如
  1. <a v-bind:href.literal="/a/b/c"></a>//.literal 修饰符告诉指令将它的值解析为一个字面字符串而不是一个表达式
缩写
       Vue.js 为两个最常用的指令 v-bind 和 v-on 提供特别的缩写。
v-bind 缩写:
  1. <!-- 完整语法 -->
  2. <a v-bind:href="url"></a>
  3. <!-- 缩写 -->
  4. <a :href="url"></a>
  5. <!-- 完整语法 -->
  6. <button v-bind:disabled="someDynamicCondition">Button</button>
  7. <!-- 缩写 -->
  8. <button :disabled="someDynamicCondition">Button</button>
v-on 缩写:
  1. <!-- 完整语法 -->
  2. <a v-on:click="doSomething"></a>
  3. <!-- 缩写 -->
  4. <a @click="doSomething"></a>













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值