14天阅读挑战赛
努力是为了不平庸~

目录

1.模板语法

1.1 插值

1.1.1 文本

1.1.2 html

1.1.3 属性

1.1.4 表达式

1.2 指令:指令指的是带有“v-"前缀的特殊属性

1.2.1 核心指令

1.2.1.1 v-if |v-else-if|v-else

1.2.1.2 v-show

1.2.1.3 v-for

1.2.1.4 v-on|v-model|v-for

1.2.1.5 参数 v-bind:href,v-on:click

1.2.1.6 简写

2. 过滤器

2.1 局部过滤器

示例:

2.2 全局过滤器

3. 计算属性

示例: 使用计算属性,计算书本的总价定义测试数据,和计算属性,计算属性遍历书本记录,计算总价

关于var 与 let

4.监听属性

watch声明语法:

今天就分享到这里了,咱们下个章节再见!!!


1.模板语法

Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解析器解析。vue将模板编译成虚拟dom,结合响应系统,Vue 能够智能地计算出最少需要重新渲染多少组件,并把 DOM 操作次数减到最少。

html模板语法:这是一种基于字符串的模板技术,以字符串和数据为输入,通过用正则表达式将占位符替换为所需数据的方式,构建出完整的 HTML 字符串。

1.1 插值

1.1.1 文本

使用{{msg}}的形式,标签将会被替换成为数据对象(data)上msg属性值,当绑定的数据对象上的msg属性值发生变化时,插值处的值也会发生变化(双向绑定

1.1.2 html

{{}}的方式将数据处理为普通文本,如果要输出html,需要使用v-html指令

//在data中定义一个html属性,其值为html
data: {html:  '<input type="text" value="hello"/>'
}
//在html中取值
<span v-html="html"></span>

1.1.3 属性

HTML属性中的值应使用v-bind指令。类型与jQuery中的$("#xxx").attr(propName, propVal)

//定义一个样式
<style>
.redClass {font-size: 30px;color: red;
}
</style>
//在data中定义一个属性,其值为上面定义的样式名
data: {red: 'redClass'
}
//在html使用v-bind指令设置样式
<p>设置之前:  aaaa</p>
<p>设置之后: <span v-bind:class="red">aaa</span></p>

以上结果在浏览器中可以看到相应的效果

1.1.4 表达式

几种常见的表达式:

  • {{str.substr(0,6).toUpperCase()}}
  • {{ number + 1 }}
  • {{ ok ? 'YES' : 'NO' }} 三元运算符
  • <li v-bind:>我的Id是js动态生成的</li>

示例1:

//在html中加入元素,定义表达式
<span>{{str.substr(0,6).toUpperCase()}}</span>
//在data中加入一个属性,名为str与html中对应
data: {str: 'hello vue'
}

查看效果:字符串被截取,并转换为大写

示例2:

<span>{{ number + 1 }}</span>
//在data中加入一个属性,名为str与html中对应
data: {number: 10
}

在data中定义的number值将会被加1

示例3:

//这是一个三元运算,如果ok为true,表达式值为YES ,如果ok为false则表达式值为NO
<span>{{ ok ? 'YES' : 'NO' }}</span>
//在data中加入一个属性,名为str与html中对应
data: {ok: true
}

示例4:

//演示id属性绑定和动态赋值
<p><input type="text" v-bind:id="bookId"/></br><!--动态生成Id--><input type="text" v-bind:id="'bookList_' + id"/>
</p>
data: {bookId: 'book001',id: 'book002'
}

该示例可以通过开发者工具查看生成的id属性值。

1.2 指令:指令指的是带有“v-"前缀的特殊属性

1.2.1 核心指令

1.2.1.1 v-if |v-else-if|v-else

根据其后表达式的bool值进行判断是否渲染该元素, 指令特性的值预期是单个 JavaScript 表达式 (v-for 是例外情况,稍后我们再讨论)

示例:HTML

<div v-if="type === 'A'">type == A
</div>
<div v-else-if="type === 'B'">type == B
</div>
<div v-else>other value
</div>

示例:JS

 var vm = new Vue({el: '#app',data: {type: 'C'}});

可以修改data中的type值观察页面的输出。

注: js = == === 之间的区别
一个等号是赋值操作,==先转换类型再比较,===先判断类型,如果不是同一类型直接为false
alert(1 == “1”); // true
alert(1 === “1”); // false

1.2.1.2 v-show

与v-if类似,只是不会渲染其身后表达式为false的元素,而且会给这样的元素添加css代码:style="display:none"。
当v-show 表达式true则显示,否则不显示。

注意:使用v-show,虽然不显示,但在页面的dom中是存在的,只是display属性为none

示例: 在HTML中加入如下内容

<div v-show="show === 'yes'">show == yes
</div>
//在data中定义show属性
var vm = new Vue({el: '#app',data: {show: 'yes' }
});

修改show值,观察页面显示

1.2.1.3 v-for

循环遍历

遍历数组: v-for="item in items", items是数组,item为数组中的数组元素

遍历对象: v-for="(value,key,index) in stu", value属性值, key属性名,index下标

示例:定义一个div,使用v-for指令输出,items是vue实例中data中定义的对象数组

<!--数组-->
<div v-for="item in items">{{item.name}} -- {{item.id}}
</div><!--循环生成下拉列表-->
<div><select ><option v-for="item in items" v-bind:value="item.id">{{item.name}}</option></select>
</div><!--对象-->
<div v-for="(o,key) in obj">{{key}}-{{o}}
</div>
var vm = new Vue({el: '#app',data: {itmes:[{name: 'zs',age:18},{name: 'ww',age:19},{name: 'ls',age:20},{name: 'zl',age:21}],obj: {name:'张三',age: 21,addr: '湖南长沙'}}
});

1.2.1.4 v-on|v-model|v-for

创建一组多选框,可以获取到用户选择项

<!--循环生成一组多选按钮,v-model通过vue的双向绑定将用户选择的项保存到定义的selected组数中-->
<div v-for="(item,index) in items">{{index}}:<input type="checkbox" v-bind:value="item.id"v-model="selected">{{item.name}}
</div>
<button v-on:click="getSelected()">获取选择</button>
var vm = new Vue({el: '#app',data: {type: 'C',show: 'no',items:[{name: '长沙',id:18},{name: '昆明',id:19},{name: '武汉',id:20},{name: '南京',id:21}],obj: {name:'张三',age: 21,addr: '湖南长沙'},selected:[]},methods: {getSelected: function() {console.log(this.selected);}}
});

1.2.1.5 参数 v-bind:href,v-on:click

示例:

<!--参数:href-->
<div><a v-bind:href="url">baidu</a>
</div><!--
参数:动态参数.
attname需要在data中定义,
注意:attname要全部小写!!
-->
<div><a v-bind:[attrname]="url">baidu</a><button v-on:[evname]="clickme">点我看看</button>
</div>

注意:在动态参数中,作为参数的变量名(如:attrname)要全部小写,否则无效 !!

var vm = new Vue({el: '#app',data: {url: 'https://www.baidu.com',attrname:'href',evname: 'click'},methods: {clickme: function() {console.log("点到我了");}}
});

1.2.1.6 简写

Vue为v-bind和v-on这两个最常用的指令,提供了特定简写

指令 简写 示例
v-bind:xxx :xxx v-bind:href 简写为 :href
v-on:xxx @xxx v-on:click 简写为 @click

2. 过滤器

vue允许自定义过滤器,一般用于常见的文本格式化,过滤器可用的两个地方:双花括号插值v-bind表达式,过滤器应该被添加在js表达式的尾部,使用管道运算符"|"

2.1 局部过滤器

//局部过滤器的定义:
var vm = new Vue({filters: {'filterName': function(value) {//过滤器实现}}
});
//过滤器的使用
<!--双花括号中的使用-->
{{ name | capitalize }}<!--在 v-bind 指令中的使用-->
<div v-bind:id="rawId | formatId"></div>
  • 注1:过滤器函数接受表达式的值作为第一个参数
  • 注2:过滤器可以串联
    {{ message | filterA | filterB }}
  • 注3:过滤器是JavaScript函数,因此可以接受参数:
    {{ message | filterA('arg1', arg2) }}

示例:

<div><p>{{msg | toUpperCase}}</p>
</div>
var vm = new Vue({el: '#app',data: {msg:"hello vue"},//局部过滤器filters:{toUpperCase: function(value) {return value.toUpperCase();}}
});

2.2 全局过滤器

拷入date.js(日期格式化)放入项目js目录中,在页面中引入。
定义全局过滤器

//全局过滤器
Vue.filter('fmtDate',function(value) {return fmtDate(value, 'yyyy年MM月dd日')
});
//过滤器的使用
<div><p>{{date | fmtDate}}</p>
</div>

3. 计算属性

计算属性用于快速计算视图(View)中显示的属性,这些计算将被缓存,并且只在需要时更新
使用场景:当一个属性需要复杂的逻辑运算之后才能获取其值,可以使用计算属性,在一个计算属性中可以完成各种复杂的逻辑,包括运算,方法调用等,只要最终返回一个结果就可以了

//声明计算属性的格式:
computed:{xxx:function(){}
}

示例: 使用计算属性,计算书本的总价
定义测试数据,和计算属性,计算属性遍历书本记录,计算总价

var vm = new Vue({el: '#app',data: {//定义测试数据books: [{name:'红楼梦', price:"120"},{name:'三国演义', price:"100"},{name:'水浒传', price:"90"},]},//计算属性computed: {compTotal: function() {let sum = 0;for(index in this.books) {sum += parseInt(this.books[index].price);}return sum;}}});
//计算属性在页面中的使用
<div v-for="book in books">{{book.name}} -> {{book.price}}
</div><div>总价:{{compTotal}}
</div>

关于var 与 let

  • var声明为全局属性
  • let为ES6新增,可以声明块级作用域的变量(局部变量)
  • 建议使用let声明变量

4.监听属性

使用场景:我们可以使用监听属性watch来响应数据的变量, 当需要在数据变化时执行异步或开销较大的操作时,这种方式比较有用。回想一下是否做过下拉列表的级联选择?

watch声明语法:

watch: {xxxx: function(val) {//监听器实现}
}

示例: 米和厘米的单位换算

设置监听器:

var vm = new Vue({el: '#app',data: {m: 1,cm: 100},//设置监听属性watch: {m: function(val) {if(val)this.cm = parseInt(val) * 100;elsethis.cm = "";},cm: function(val) {if(val)this.m = parseInt(val) / 100;elsethis.m = "";}}
});

HTML中使用v-model实现与数据的双向绑定

<div><!--注意v-model的双向绑定-->米:     <input type="text" v-model="m">厘米:  <input type="text" v-model="cm">
</div>

今天就分享到这里了,咱们下个章节再见!!!

Vue02基础语法-插值+过滤器+计算属性+计算属性相关推荐

  1. (6)vue.js基础语法—插值表达式

    一.vscode插件介绍 在我们演示插值表达式之前,我们先安装这一个VScode给我们提供的插件,它可以将我们书写好的网页通过服务端口的方式进行访问,同时它的好处还有:再修改代码后,不需要我们手动点击 ...

  2. vue基础-动态class、动态style、vue过滤器、vue计算属性vue基础-动态class、动态style、vue过滤器、vue计算属性

    vue基础-动态class.动态style.vue过滤器.vue计算属性 文章目录 vue基础-动态class.动态style.vue过滤器.vue计算属性 vue基础-动态class vue基础-动 ...

  3. Vue基础语法-计算属性

    计算属性 * 计算属性 计算属性写法是个方法,但是使用的时候作为属性使用.计算属性中使用到data中的数据只要发生了变化,计算属性就会重新计算.如果两次获取计算属性的时候,里面使用的属性没有发生变化, ...

  4. python设计一个函数定义计算并返回n价调和函数_音乐编程语言musicpy教程(第三期) musicpy的基础语法(二)...

    这个是我在github上给我的项目musicpy写的wiki,分为数据结构,基础语法,实际应用三大部分来为大家讲解这门音乐编程语言,主要是想给大家写一个musicpy的详细的教程与介绍,目前wiki只 ...

  5. p怎么调用python的实例属性_Python中类的声明,使用,属性,实例属性,计算属性及继承,重写...

    Python中的类的定义以及使用: 类的定义: 定义类 在Python中,类的定义使用class关键字来实现 语法如下:classclassName:"类的注释"类的实体 (当没有 ...

  6. 大学计算机应用基础与计算思维,计算思维在二本院校计算机应用基础课程中应用.doc...

    计算思维在二本院校计算机应用基础课程中应用 计算思维在二本院校计算机应用基础课程中应用 [摘 要]针对学生学习网页设计课程中出现的问题,我们提出了一个解决办法:项目驱动加任务驱动的教学方法.通过学生参 ...

  7. PTA 基础编程题目集 7-11 分段计算居民水费 C语言

    PTA 基础编程题目集 7-11 分段计算居民水费 C语言 为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费y(元)与月用水量x(吨)相关:当x不超过15吨时,y=4x/3:超 ...

  8. 计算机思维能力培养的核心是什么,计算机基础教学的核心任务是计算思维能力的培养[J]...

    中国大学教学 2010年第9期 计算机基础教学的核心任务是计算思维能力的培养 --<九校联盟(C9)计算机基础教学发展战略联合声明>解读 何钦铭 陆汉权 冯博琴 摘 要:大学计算机基础教学 ...

  9. 1.8编程基础之多维数组 03 计算矩阵边缘元素之和 python

    http://noi.openjudge.cn/ch0108/03/ """ 1.8编程基础之多维数组 03 计算矩阵边缘元素之和 http://noi.openjudg ...

最新文章

  1. Linux 日志管理(RHEL7)
  2. python序列类型-Python(第八课,序列类型)
  3. 阿里开源新一代人机对话模型 ESIM:准确率打破世界纪录,提升至 94.1%!
  4. C#跨线程操作控件的线程安全方法
  5. 用fft对信号进行频谱分析实验报告_示波器上的频域分析利器,Spectrum View测试分析...
  6. 九度oj题目1518:反转链表
  7. 选择排序、插入排序、冒泡排序、希尔排序算法的总结 - 复杂度、实现和稳定性
  8. 一文带你剖析LiteOS互斥锁Mutex源代码
  9. 手机电子词典_网易有道入局,「智能化」能拯救电子词典这个「老古董」吗?...
  10. oracle逗号分隔函数
  11. 汉堡王,你不要给我们AI泼脏水
  12. bootstrap 固定最底部_固定在页面顶部或底部的导航栏《 Bootstrap 3 基础 》
  13. 华为NP课程笔记27-QINQ概述
  14. hd Aruba wifi / honor
  15. 怎么把证件照压缩在30K之内?教你三秒快速压缩证件照
  16. 在学校,你需要知道的8种思维导图的类型及其工作方式
  17. Visual C++6.0画三维立体图形
  18. python爬取股票信息_利用Python爬取网易上证所有股票数据(代码
  19. uniapp uview 图片上传
  20. html 中精灵图使用

热门文章

  1. 网上文库文档免费下载
  2. 详解自动售货机设计原理方案
  3. 北大青鸟 php,PHP技术北大青鸟计算机职业培训
  4. sw2020sw无法获得下列许可,使用许可文件不支持此版本 解决方案
  5. OSI网络体系结构及其各层主要协议
  6. 金蝶EAS系统,员工、职员、人员、用户、职位等基础数据查询
  7. 手机蓝牙连接GPrinter打印机进行打印 iOS
  8. js 求一个月以前的时间
  9. Spring配置事务管理
  10. 腾讯云数据库TDSQL——赤兔平台使用