本系列课程选用vue的版本为1.0.21

什么是vue?

vue是由尤雨溪开发的一款基于MVVM的框架,M->模型,V->视图, 也就是说模型数据改变了,视图也跟着改变, 视图内容改变,模型内容也跟着改变, 业界称之为双向绑定,或者说双向数据驱动,基于此特点,学习这个框架,跟jquery完全不同, 不要用DOM的思想来学习vue, 在vue里面几乎不需要用到DOM操作,一切都是基于数据驱动.

如何使用vue?

现在vue已经发布了2版本,为什么学1版本,如果想要深入的学习vue,了解和掌握个版本的异同是很有必要的。要想使用vue,首先必须引入vue,在客户端(浏览器)可以通过script标签引入,如果是服务端,通过import引入

一个基本的vue程序有哪些部分组成?

就像初学者学习jquery一样,一个基本的jquery程序, 有 domReady, 选择器,this绑定,事件绑定,属性和样式修改组成的,而vue的基本结构如下:

window.onload = function () {
var c = new Vue({
el: '#box', //相当于选择器
data: {
content: 'ghostwu tell you how to learn vue',
msg : 'vue中的数据1',
msg2 : 'vue中的数据2'
}
});
}

这段简单的代码,可以实现最基本的数据读取和显示功能.

1,使用vue,先要实例化一个vue

2,构造函数中,传入字面量对象, data后面也是一个字面量对象,里面的数据可以自定义,按照json的格式

3,el: 表示要把data中的数据显示在 el 后面跟的元素下面, 比如上面的例子, 就是把data中, content, msg, msg2的数据显示在id 为 box的元素下面

具体怎么读取呢?

 <div id="box">
{{content}}
<br>
{{msg}}
<br>
{{msg2}}
</div>

{{data中定义的键}}, 如{{content}} 读取的就是vue实例 data里面的 content定义的值,所以{{content}}输出 ghostwu tell you how to learn vue, 同理{{msg}}输出vue中的数据1 ,

{{msg2}}输出 vue中的数据2

如果我们需要让数据显示在不同的元素下面,可以定义多个vue实例

         window.onload = function () {
var c = new Vue({
el: '#box', //相当于选择器
data: {
content: 'ghostwu tell you how to learn vue',
msg : 'vue中的数据1',
msg2 : 'vue中的数据2'
}
});
var c2 = new Vue({
el: '#box2',
data: {
msg: 'this is a paragraphy'
}
});
var c3 = new Vue({
el: '#box3',
data: {
msg2: 'this is box3'
}
});
}
 <p id="box2">{{msg}}</p>
<div id="box">
{{content}}
<br>
{{msg}}
<br>
{{msg2}}
</div>
<div id="box3">{{msg2}}</div>

指令:v-model  作用:实现数据的双向驱动

        window.onload = function () {
var c = new Vue({
el: "body",
data: {
msg: 'welcome to study vue!!!'
}
});
}
     <input type="text" v-model="msg" id="txt" />
<input type="text" v-model="msg" id="txt2"/>
<br/>
{{msg}}
<div class="box">
{{msg}}
</div>
<div class="box">
{{msg}}
</div>
<div class="box">
{{msg}}
</div>
<div class="box">
{{msg}}
</div>

上例,如果修改data中msg的值,那么输入框中v-model绑定的msg, 以及4个div中输出的msg的值 都会随着data中msg的值的变化而变化,这个就叫做M->V,模型M(data中的数据),

视图V(html代码).  模型改变,视图V也跟着改变, 同样的上面两个input输入框中的值任何一个改变了,data中的msg也会改变,4个div中的msg也跟着改变,这个就叫做V->M,视图改变,模型数据也跟着改变.

data中可以定义哪些数据?

常见的字符串,整形数字,数组,布尔,对象类型都可以

          window.onload = function () {
var c = new Vue({
el: 'body',
data: {
msg: 'this is a msg',
msg2 : 'hello world!',
arr : [ 100, 200, 300 ],
flag : true,
json : {
key1 : '八戒',
key2 : '悟空',
key3 : '沙僧'
},
num : 100,
}
});
}
     {{msg}} <br/>
{{msg2}} <br/>
{{arr}} <br/>
{{flag}} <br/>
{{json}}<br/>
{{num}}<br/>

输出结果:

this is a msg 
hello world! 
100,200,300 
true 
[object Object]
100

对于json数据,默认情况输出的是object Object,实际使用中,我们肯定是不希望输出这玩意, 所以,vue中提供了一个指令v-for

指令:v-for. 作用:循环数组与对象

     window.onload = function () {
var c = new Vue({
el: '#box',
data: {
persons: {
name1: '八戒',
name2: '沙增',
name3: '悟空'
}
}
});
}
 <div id="box">
<ul>
<li v-for="value in persons">{{value}}</li>
</ul>
<ul>
<li v-for="a in persons">{{a}}</li>
</ul>
</div>

输出结果:

  • 八戒
  • 沙增
  • 悟空
  • 八戒
  • 沙增
  • 悟空

v-for指令中, in前面的变量,就是当前需要输出persons的每一项的值,他的名称可以自定义.

v-for也可以循环数组

         window.onload = function () {
var c = new Vue({
el : '#box',
data : {
arr : [ '张三', 100, '李四', 200 ]
}
});
}
 <ul id="box">
<li v-for="value in arr">{{value}}</li>
</ul>

输出结果:

  • 张三
  • 100
  • 李四
  • 200

如果需要获取当前数组项的索引,可以用{{$index}}

 <ul id="box">
<li v-for="value in arr">{{value}}----{{$index}}</li>
</ul>

输出结果:

  • 张三----0
  • 100----1
  • 李四----2
  • 200----3

v-for还有另外几种形式,输出数组:

         window.onload = function () {
var c = new Vue({
el : '#box',
data : {
persons : {
name1 : "八戒",
name2 : "悟空",
name3 : "唐僧"
}
}
});
}
 <ul id="box">
<li v-for="value in persons">{{value}}---{{$index}}----{{$key}}</li>
<hr/>
<li v-for="value in persons">{{value}}---{{$index}}----{{$key}}</li>
<hr/>
<li v-for="(k,v) in persons">{{k}}----{{v}}---{{$index}}---{{$key}}</li>
</ul>

输出结果:

    • 八戒---0----name1
    • 悟空---1----name2
    • 唐僧---2----name3

    • 八戒---0----name1
    • 悟空---1----name2
    • 唐僧---2----name3

  • name1----八戒---0---name1
  • name2----悟空---1---name2
  • name3----唐僧---2---name3

[js高手之路] vue系列教程 - vue的基本用法与常见指令(1)的更多相关文章

  1. [js高手之路] es6系列教程 - 对象功能扩展详解

    第一:字面量对象的方法,支持缩写形式 //es6之前,这么写 var User = { name : 'ghostwu', showName : function(){ return this.nam ...

  2. [js高手之路] es6系列教程 - 迭代器,生成器,for...of,entries,values,keys等详解

    接着上文[js高手之路] es6系列教程 - 迭代器与生成器详解继续. 在es6中引入了一个新的循环结构for ....of, 主要是用来循环可迭代的对象,那么什么是可迭代的对象呢? 可迭代的对象一般 ...

  3. [js高手之路] es6系列教程 - 迭代器与生成器详解

    什么是迭代器? 迭代器是一种特殊对象,这种对象具有以下特点: 1,所有对象都有一个next方法 2,每次调用next方法,都会返回一个对象,该对象包含两个属性,一个是value, 表示下一个将要返回的 ...

  4. [js高手之路] es6系列教程 - promise常见用法详解(resolve,reject,catch,then,all,race)

    关于promise我在之前的文章已经应用过好几次,如[js高手之路]Node.js+jade+express+mongodb+mongoose+promise实现todolist,本文就来讲解下pro ...

  5. [js高手之路] es6系列教程 - 函数的默认参数详解

    在ES6之前,我们一般用短路表达式处理默认参数 function show( a, b ){ var a = a || 10; var b = b || 20; console.log( a, b ) ...

  6. [js高手之路] es6系列教程 - 箭头函数详解

    箭头函数是es6新增的非常有意思的特性,初次写起来,可能会觉得别扭,习惯之后,会发现很精简. 什么是箭头函数? 箭头函数是一种使用箭头( => )定义函数的新语法, 主要有以下特性: 不能通过n ...

  7. [js高手之路] es6系列教程 - var, let, const详解

    function show( flag ){ console.log( a ); if( flag ){ var a = 'ghostwu'; return a; } else { console.l ...

  8. [js高手之路] es6系列教程 - 不定参数与展开运算符(...)

    三个点(...)在es6中,有两个含义: 用在形参中, 表示传递给他的参数集合, 类似于arguments, 叫不定参数. 语法格式:  在形参面前加三个点( ... ) 用在数组前面,可以把数组的值 ...

  9. [js高手之路]es6系列教程 - 解构详解

    解构通俗点说,就是通过一种特定格式,快捷的读取对象/数组中的数据的方法, es6之前,我们通过对象名称[键] 读取数据 var User = { 'name' : 'ghostwu', 'age' : ...

  10. [js高手之路] es6系列教程 - Set详解与抽奖程序应用实战

    我们还是从一些现有的需求和问题出发,为什么会有set,他的存在是为了解决什么问题? 我们看一个这样的例子,为一个对象添加键值对 var obj = Object.create( null ); obj ...

随机推荐

  1. Swagger服务API治理详解

    swager2的简介 在App后端开发中经常需要对移动客户端(Android.iOS)提供RESTful API接口,在后期版本快速迭代的过程中,修改接口实现的时候都必须同步修改接口文档,而文档与代码 ...

  2. java日期详解

    [TOC] 一.简介 java中的日期处理一直是个问题,没有很好的方式去处理,所以才有第三方框架的地位比如joda. 文章主要对java日期处理的详解,用1.8可以不用joda. 1. 相关概念 首先 ...

  3. linux工作中遇到的问题总结---更新中

    今天这个,严格来说不算一篇文章,我只想把我工作中遇到的问题分享给大家,让大家少犯错误. 1.安装rmp包时出现错误 :header V3 DSA signature: nokey ,key id .. ...

  4. How to support comparators in our sort implementations?

    上图是普林斯顿算法课part1.Mergesort章节给出的参考代码,可以发现这个代码有三处警告.造成的隐患就是我们无法在类型检查时发现送入sort()函数的数组元素类型和Comparator的泛型不 ...

  5. let 和 const

    let命令 1.let命令只在所在的代码快内有效 { let a = 'hello world' console.log(a) //hello world } console.log(a) //Unc ...

  6. BNUOJ34977夜空中最亮的星(数学,向量的应用)

    夜空中最亮的星 Time Limit: 2000ms Memory Limit: 65536KB 64-bit integer IO format: %lld      Java class name ...

  7. 阿里云部署Docker(6)----解决删除&lt;none&gt;镜像问题

    转载请注明来源,本博客原创作者为:http://blog.csdn.net/minimicall?viewmode=contents 在Docker使用中,常常会碰到删除镜像不成功.反而让镜像变成了& ...

  8. C#调用RESTful API

    如今非常多的网络服务都用RESTful API来实现. 比方百度的搜索推广API介绍使用Rest原因:REST+JSON风格的API相比SOAP+XML,优点是:调用更加灵活.也更easy扩展:JSO ...

  9. XML解析之SAX

    今天在敲代码的时候,想要实现地址选择功能,就是那个能够选择省.市.县的一个,用到的一个开源框架Android-PickerView,当然他这个里面尽管实现了能够选择的城市列表.可是他这是自己创建的,可 ...

  10. 基于Office 365的随需应变业务应用平台

    作者:陈希章 发表于 2017年9月7日 这是我去年10月底在微软技术大会(Microsoft Ignite 2016) 上面的演讲主题,承蒙大家抬爱,也沾了前一场明星讲师的光,我记得会场几乎是满座. ...