Vuejs——(1)入门(单向绑定、双向绑定、列表渲染、响应函数)
版权声明:出处http://blog.csdn.net/qq20004604
参照链接:
http://cn.vuejs.org/guide/index.html
【起步】部分
本文是在其基础上进行补全和更详细的探寻
嗯,根据朋友的建议,我改投vue阵营了
(一)单向绑定
- <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;
②在输入框内按回车键,则会将输入框的内容转为数字,并添加到一个列表里,该列表里转换后的数字和一个删除按钮,并且输入框内的值,变为转为数字后的值加一。
如图:
③他的添加,利用的是双向绑定,将输入的值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——(1)入门(单向绑定、双向绑定、列表渲染、响应函数)的更多相关文章
- vue 单向数据流 & 双向绑定
在react中是单向数据绑定,而在vue中的特色是双向数据绑定.但是其实就我个人的理解是: 其实无论是vue还是react其实还是提倡单向数据流去管理状态,这一点在vuex和redux状态管理器上体现 ...
- 面试问题:Vuejs如何实现双向绑定
最近出去面试,栽在这个问题上,提到vuejs,面试官一般会让你说vuejs的特点,一般就要回答virtual dom tree, dom tree diff, 以及数据双向绑定,然后面试官会追问你,v ...
- vue实现双向绑定mvvm
剖析Vue实现原理 - 如何实现双向绑定mvvm 本文能帮你做什么?1.了解vue的双向数据绑定原理以及核心代码模块2.缓解好奇心的同时了解如何实现双向绑定为了便于说明原理与实现,本文相关代码主要摘自 ...
- 【vue】跟着老马学习vue-数据双向绑定
学习了node.js教程,只能说是有了一定的了解,之前也了解了webpack和es6的核心内容,也看过vue2.0的官网教程,并结合视频看过项目,但是理解和运用仍然存在很多问题,接下来的一段时间,跟着 ...
- 剖析Vue原理&实现双向绑定MVVM-1
本文能帮你做什么?1.了解vue的双向数据绑定原理以及核心代码模块2.缓解好奇心的同时了解如何实现双向绑定为了便于说明原理与实现,本文相关代码主要摘自vue源码, 并进行了简化改造,相对较简陋,并未考 ...
- Vue2.0实现双向绑定的原理
一.几种实现双向绑定的做法 目前几种主流的mvc(vm)框架都实现了单向数据绑定,而我所理解的双向数据绑定无非就是在单向绑定的基础上给可输入元素(input.textare等)添加了change(in ...
- AngularJS学习笔记(三)数据双向绑定
双向绑定 双向绑定是AngularJS最实用的功能,它节省了大量的代码,使我们专注于数据和视图,不用浪费大量的代码在Dom监听.数据同步上,关于双向更新,可看下图: 下面,我们通过代码来实现.先不要纠 ...
- 前端MVC Vue2学习总结(四)——条件渲染、列表渲染、事件处理器
一.条件渲染 1.1.v-if 在字符串模板中,如 Handlebars ,我们得像这样写一个条件块: <!-- Handlebars 模板 --> {{#if ok}} <h1&g ...
- vuejs属性绑定和双向绑定
属性绑定 html <div v-bind:title="title">hello world</div> js new Vue({ el:'#root', ...
随机推荐
- OOM三种情况
第一种OutOfMemoryError: PermGen space发生这种问题的原意是程序中使用了大量的jar或class,使java虚拟机装载类的空间不够,与Permanent Generatio ...
- ORM对象关系映射
ORM 总结: ORM:对象关系映射 作用: 1.将定义数据库模型类--> 数据库表 2.将定义数据库模型类中的属性--->数据库表字段 3.将模型对象的操作(add,delete,com ...
- 46.Scrapy框架结构
Scrapy的介绍:Scrapy是基于Twisted的异步处理框架,是纯python语言实现的爬虫框架,特点是架构清晰,模块间耦合度低.扩展性强较为灵活. 框架结构如图所示: Engine:引擎,处理 ...
- leetcode85
class Solution { public int maximalRectangle(char[][] matrix) { if(matrix == null || matrix.length = ...
- codestyle 设置问题
参考: https://blog.csdn.net/hugh77/article/details/43268195 使用 4 空格缩进,而非 TAB. 在小缩进(可以嵌套更深)和大缩进(更易读)之间, ...
- push() 方法将一个或多个元素添加到数组的末尾,并返回新数组的长度
var numbers = [1, 2, 3]; numbers.push(4); console.log(numbers); // [1, 2, 3, 4] numbers.push(5, 6, 7 ...
- Halcom学习笔记1——Halcon知识点
文件: 1.浏览HDevelop示例程序 2.程序另存在:Ctrl+Shift+S 3.导出:Ctrl+Shift+O X 编辑: 1.快捷键: F3 激活 F4 注销 重复查找:C ...
- 史上最坑 idea 更改代码不生效
原来, 如果本地多次调整过系统时间,那么gradle 的缓存 会缓存 你的 上次编译时间再未来,那么你再怎么编译,都很难生效,即使删除了生成的字节码目录. 然后invalidate caches/re ...
- DJango 基础 (3)
模板路径 在配置文件setting.py中找到TEMPLATES设置来配置. 这是一个设置选项的列表,模板大都包含两项通用设置:两种方式配置模板: 第一种: DIRS 定义一个目录列表,模板引擎按列表 ...
- 20162322 朱娅霖 作业011 Hash
20162322 2017-2018-1 <程序设计与数据结构>第十一周学习总结 教材学习内容总结 哈希方法 一.定义 哈希:次序--更具体来说是项在集合中的位置--由所保存元素值的某个函 ...