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 相关文章推荐
Javascript &amp; DHTML 实例编程(教程)DOM基础和基本API
Jun 02 Javascript
JQuery的html(data)方法与&amp;lt;script&amp;gt;脚本块的解决方法
Mar 09 Javascript
javascript中bind函数的作用实例介绍
Sep 28 Javascript
jQuery中prevUntil()方法用法实例
Jan 08 Javascript
jQuery仿天猫实现超炫的加入购物车
May 04 Javascript
第八篇Bootstrap下拉菜单实例代码
Jun 21 Javascript
Vue组件BootPage实现简单的分页功能
Sep 12 Javascript
详解支持Angular 2的表格控件
Jan 19 Javascript
JavaScript中防止微信浏览器被整体拖动的方法
Aug 25 Javascript
Bootstrap 中data-[*] 属性的整理
Mar 13 Javascript
vue 移动端注入骨架屏的配置方法
Jun 25 Javascript
vue实现淘宝购物车功能
Apr 20 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
smarty的保留变量问题
2008/10/23 PHP
PHP 验证码的实现代码
2011/07/17 PHP
PHP中in_array的隐式转换的解决方法
2018/03/06 PHP
Laravel关联模型中过滤结果为空的结果集(has和with区别)
2018/10/18 PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
2019/10/11 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
javascript 对表格的行和列都能加亮显示
2008/12/26 Javascript
用showModalDialog弹出页面后,提交表单总是弹出一个新窗口
2009/07/18 Javascript
jquery URL参数判断,确定菜单样式
2010/05/31 Javascript
jQuery学习笔记之jQuery的事件
2010/12/22 Javascript
jQuery获取选中内容及设置元素属性的方法
2014/07/09 Javascript
下拉框select的绑定示例
2014/09/04 Javascript
JavaScript重定向URL参数的两种方法小结
2016/10/19 Javascript
微信小程序动态的加载数据实例代码
2017/04/14 Javascript
用原生JS实现简单的多选框功能
2017/06/12 Javascript
layui select动态添加option的实例
2018/03/07 Javascript
vue实现修改图片后实时更新
2019/11/14 Javascript
基于vue3.0.1beta搭建仿京东的电商H5项目
2020/05/06 Javascript
VueQuillEditor富文本上传图片(非base64)
2020/06/03 Javascript
Vue自定义render统一项目组弹框功能
2020/06/07 Javascript
Python实例一个类背后发生了什么
2016/02/09 Python
Python中的变量和作用域详解
2016/07/13 Python
Python正确重载运算符的方法示例详解
2017/08/27 Python
python实现壁纸批量下载代码实例
2018/01/25 Python
Python 循环语句之 while,for语句详解
2018/04/23 Python
Python将list中的string批量转化成int/float的方法
2018/06/26 Python
Python列表list排列组合操作示例
2018/12/18 Python
实例讲解Python中浮点型的基本内容
2019/02/11 Python
后端开发使用pycharm的技巧(推荐)
2020/03/27 Python
美国著名的家居用品购物网站:Bed Bath & Beyond
2018/01/05 全球购物
DataReader和DataSet的异同
2014/12/31 面试题
出国签证在职证明
2014/09/20 职场文书
小学教师工作总结2015
2015/04/07 职场文书
童年读书笔记
2015/06/26 职场文书
Golang生成Excel文档的方法步骤
2021/06/09 Golang
微信小程序APP的生命周期及页面的生命周期
2022/04/19 Javascript