Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)


Posted in Javascript onSeptember 09, 2016

什么是组件?

组件(Component)是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码。在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能。在有些情况下,组件也可以是原生 HTML 元素的形式,以 is 特性扩展。

接下来给大家介绍vuejs单向绑定、双向绑定、列表渲染、响应函数基础知识,具体详情如下所示:

(一)单向绑定

<div id="app"> 
{{ message }} 
</div> 
<script> 
new Vue({ 
el: '#app', 
data: { 
message: 'Hello Vue.js!' 
} 
}) 
</script>

①el应该表示绑定的意思,绑定id=app这个标签

也可以改为以下这样:

<div class="app"> 
{{ message }} 
</div>

el: '.app',

一样有效。

但如果是多个的话,只对第一个有效:

<div class="app"> 
{{ message }} 
</div> 
<div class="app"> 
{{ message }} 
</div> 
Hello Vue.js!
{{ message }}

②data里的message变量,表示{{message}的值

(二)双向绑定

<div id="app"> 
{{ message }} 
<br/> 
<input v-model="message"/> 
</div> 
<script> 
new Vue({ 
el: '#app', 
data: { 
message: 'Hello Vue.js!' 
} 
}) 
</script>

效果是:

①input输入框里有初始值,值是data里的message属性的值;

②修改输入框的值可以影响外面的值;

(三)函数返回值

<div id="app"> 
{{ message() }} 
<br/> 
<input v-model="message()"/> 
</div> 
<script> 
new Vue({ 
el: '#app', 
data: { 
message: function () { 
return 'Hello Vue.js!'; 
} 
} 
}) 
</script>

效果:

①输出值也是message的返回值;

②缺点:失去双向绑定!

(四)渲染列表

<div id="app"> 
<ul> 
<li v-for="list in todos"> 
{{list.text}} 
</li> 
</ul> 
</div> 
<script> 
new Vue({ 
el: '#app', 
data: { 
todos: [ 
{text: "1st"}, 
{text: "2nd"}, 
{text: "3rd"} 
] 
} 
}) 
</script>

v-for里的list,类似for in里面的i,

个人认为,

①可以把list in todos,理解为for list in todos

②然后把下一行的list.text理解为 todos[list].text

然后这个v-for标签在哪里,就是以他为单位进行多次复制。

(五)处理用户输入

<div id="app"> 
<input v-model="message"> 
<input type="button" value="值+1" v-on:click="add"/> 
<input type="button" value="值-1" v-on:click="minus"/> 
<input type="button" value="重置归零" v-on:click="reset"/> 
</div> 
<script> 
new Vue({ 
el: '#app', 
data: { 
message: 1 
}, 
methods: { 
add: function () { 
this.message++; //这步要加this才能正确获取到值 
}, 
minus: function () { 
this.message--; 
}, 
reset: function () { 
this.message = 0; 
} 
} 
}) 
</script>

效果:

①对输入框的值,点击一次add按钮,则值+1;

②如果不能加,则像正常表达式加错了那样返回结果,例如NaN;

③data里的message的值,是初始值;

④methods里是函数集合,他们之间用逗号分隔;

⑤获取值的时候,要加上this,例如this.message获取的是message的值。

(六)多功能

<div id="app"> 
<input v-model="val" v-on:keypress.enter="addToList"> 
<ul> 
<li v-for="val in values"> 
{{val.val}} 
<input type="button" value="删除" v-on:click="removeList($index)"/> 
</li> 
</ul> 
</div> 
<script> 
new Vue({ 
el: '#app', 
data: { 
val: "1", 
values: [] 
}, 
methods: { 
addToList: function () { 
var val = parseInt(this.val.trim()); //注意,因为当上面的val是字符串类型的时候,才能用trim(),如果是数字类型,则用this.val 
if (val) { 
this.values.push({val: val}); 
} 
this.val = String(val + 1); 
}, 
removeList: function (index) { 
this.values.splice(index, 1); 
} 
} 
}) 
</script>

效果:

①初始输入框内值为1;

②在输入框内按回车键,则会将输入框的内容转为数字,并添加到一个列表里,该列表里转换后的数字和一个删除按钮,并且输入框内的值,变为转为数字后的值加一。

如图:

Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)

③他的添加,利用的是双向绑定,将输入的值push到data里面的values这个数组之种,然后利用渲染列表的效果,输出多行值。

④在button标签里,函数的参数名给了一个参数,是该行索引,参数名是$index

⑤标签里,触发的函数的函数名,可以加括号,也可以不加括号,实测似乎是没有影响的。

(七)标签和API总结(1)

① {{ 变量名 }}

表示绑定的变量,调用时需要用this.变量名

② v-model=”变量”

双向绑定使用,如果input里不加任何type就是文本,如果加type就是type,例如:

<input v-model="DATE" type="date"/> 
<li>{{DATE}}</li>

就会将日期类型的输入框的值,和li标签显示的内容绑定在一起。

③ v-on:click=”函数名”

点击时触发该函数,可加()也可以不加,$index作为参数表示索引,索引值从0开始。

④ v-for

双向绑定的在数组内容更新后,会实时更新,v-model也是;

类似for in语句,被多次使用的是

⑤ v-on:事件

即触发的事件,有click(点击),keypress(按键按下)

事件后面可以跟更具体的,例如keypress.enter是回车,keypress.space是空格等

更多的需要之查看

⑥ new vue

通过new一个vue的实例,然后传一个对象作为参数给这个实例;

其中:

el 表示绑定的模板(只会匹配到绑定的第一个)

data 表示数据,可以直接被取用,例如用在v-model或者是{{变量名}}中

methods 表示方法

⑦ 函数内部调用变量

通过this.变量名,例如:

data: { 
val: "1", 
values: [] 
}, 
methods: { 
addToList: function () { 
console.log(this.val);

这里的this.val就是上面的data.val,也是html里的{{val}},也是v-model=”val”,但不是

<li v-for="val in values"> 
{{val.val}} 
<input type="button" value="删除" v-on:click="removeList($index)"/> 
</li>

里面的val.val,至于原因,个人认为是这里的val处于v-for的作用域内,因此val in values 里的val其在作用域链中的优先级更高

以上所述是小编给大家介绍的Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
经典的解除许多网站无法复制文字的绝招
Dec 31 Javascript
一个jquery实现的不错的多行文字图片滚动效果
Sep 28 Javascript
jQuery中ajax的get()方法用法实例
Dec 26 Javascript
js实现背景图片感应鼠标变化的方法
Feb 28 Javascript
javascript实现了照片拖拽点击置顶的照片墙代码
Apr 03 Javascript
JS检测页面中哪个HTML标签触发点击事件的方法
Jun 17 Javascript
Vue.js教程之计算属性
Nov 11 Javascript
JS 实现 ajax 异步浏览器兼容问题
Jan 21 Javascript
JavaScript中的工厂函数(推荐)
Mar 08 Javascript
基于JS实现带动画效果的流程进度条
Jun 01 Javascript
node.js中express模块创建服务器和http模块客户端发请求
Mar 06 Javascript
Javascript Web Worker使用过程解析
Mar 16 Javascript
微信+angularJS的SPA应用中用router进行页面跳转,jssdk校验失败问题解决
Sep 09 #Javascript
Vuejs第十三篇之组件——杂项
Sep 09 #Javascript
jQuery属性选择器用法示例
Sep 09 #Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
Sep 09 #Javascript
vuejs动态组件给子组件传递数据的方法详解
Sep 09 #Javascript
Vuejs第十二篇之动态组件全面解析
Sep 09 #Javascript
js动态生成form 并用ajax方式提交的实现方法
Sep 09 #Javascript
You might like
PHP动态图像的创建
2006/10/09 PHP
Apache2 httpd.conf 中文版
2006/12/06 PHP
php格式输出文件var_export函数实例
2014/11/15 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
2021/03/04 PHP
jQuery之网页换肤实现代码
2011/04/30 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
2015/10/25 Javascript
Bootstrap项目实战之子栏目资讯内容
2016/04/25 Javascript
简单谈谈ES6的六个小特性
2016/11/18 Javascript
原生js实现省市区三级联动代码分享
2018/02/12 Javascript
React 项目迁移 Webpack Babel7的实现
2018/09/12 Javascript
react高阶组件添加和删除props
2019/04/26 Javascript
Javascript实现打鼓效果
2021/01/29 Javascript
浅谈Python 中整型对象的存储问题
2016/05/16 Python
python实现的正则表达式功能入门教程【经典】
2017/06/05 Python
python3实现163邮箱SMTP发送邮件
2018/05/22 Python
Python带动态参数功能的sqlite工具类
2018/05/26 Python
pytorch permute维度转换方法
2018/12/14 Python
如何利用Python分析出微信朋友男女统计图
2019/01/25 Python
python学生管理系统学习笔记
2019/03/19 Python
更新pip3与pyttsx3文字语音转换的实现方法
2019/08/08 Python
python PyQt5/Pyside2 按钮右击菜单实例代码
2019/08/17 Python
python绘制封闭多边形教程
2020/02/18 Python
分享全球十款超强HTML5开发工具
2014/05/14 HTML / CSS
HTML5不支持frameset的两种解决方法
2016/11/14 HTML / CSS
东南亚排名第一的服务市场:kaodim
2019/03/28 全球购物
Hobbs官方网站:英国奢华女性时尚服装
2020/02/22 全球购物
大学生创业计划书的格式要求
2013/12/29 职场文书
教师业务学习制度
2014/01/25 职场文书
小学师德标兵先进事迹材料
2014/05/25 职场文书
优秀班主任经验交流材料
2014/06/02 职场文书
电子专业求职信
2014/06/19 职场文书
客房领班岗位职责
2015/02/11 职场文书
2015年小学语文工作总结
2015/05/25 职场文书
公司劳动纪律管理制度
2015/08/04 职场文书
nginx 防盗链防爬虫配置详解
2021/03/31 Servers
Pytorch实现图像识别之数字识别(附详细注释)
2021/05/11 Python