昨天我们大致了解了有关Vue的基础知识和语法;今天我们继续在大V这条路上前进。

首先,我们回忆一下昨天提到的相关知识点:

1.了解Vue的核心理念------”数据驱动视图“

2.了解Vue的特色功能-------”双向绑定“

3.了解Vue的基础语法-------”{{bigSurprise}},el:'',data{},vm.project,method{},等

首先,昨天我们提到了很好用的双向绑定,但是如果在某些情况下我们不需要双向绑定应该怎么办呢,看如下代码:

<div id=" javascript ">

<div v-once> {{ vue }} </div>

<input v-medol="vue">

</div>

new Vue({

  el:'#javascript'

  data{

    vue : ' hello world '

}

})

那么这个地方,我们堆div标签添加一个directive,即为 v-once,阻止了双向绑定,所以当input中的元素发生改变,div中也并不会改变。

然后进入正题------------filters(过滤器)

先上代码:

new Vue ({

  el:'#javascript'

  data{

    vue :  123.123

},

  filters{

    toInt function(value){

      return parseInt(value)

}

}

})

<div>{{vue}}</div>

//那么这个时候div中输出的元素就应该是整数 123.

可以看到,data中定义了一个小数变量,通过关键字filters定义了一个传参方法(值得注意的是filters中function的默认第一个参数为当前value值)---toInt

既然说到了filters,那么我们还需了解到的是,filters支持链式写法,代码如下:

<div>{{ vue | filtersMc | filtersCm }}</div> ( 利用管道符分割多个过滤器,过滤器会自动按照顺序执行 )

当然filters也可以传递参数, 代码如下:

<div>{{ vue | filtersMc , Mc1 , Mc2 }}</div>

(不同的参数之间用逗号隔开,在这里,其实我们已经拥有了3个参数-------value, Mc1 , Mc2)

PS: 然而filters在2.0版本以后,将不再被允许在directive中使用,所以这个时候我们引入 计算属性---computed;

废话不多说,直接上代码:

new Vue({

  el:' mcc ',

  data {

    mcc_number : 123.123

},

  filters{

    toInt function(value){

      return parseInt(value)

},

  computed{

    mcc_numbers : function(){

      return parseInt( this.mcc_number )

}

  method{

    toInt : function{

      return parseInt (this.mcc_number)

}

}

}

}

})

<div id="mcc">

<div> {{mcc_number}} </div>

<div>{{mcc_numbers}}</div>

</div>

以上代码,我们可以发现,

1.我们利用计算属性computed替代了filters的作用

2.我们利用computed计算出来的mcc_numbers其实是一个动态属性,它随着mcc_number的变化而改变,而不像filters只获取当前data中的数据,这一点值得推崇。

3.这里的computed中的mcc_numbers不是一个方法,而是作为一个属性来使用(如果不能理解,试着理解计算属性这个词)

4.上面代码中的this,也就是vm(昨天提到了  view-medol)

所以,我们看一下打印的结果:

console.log( vm.mcc_number )    // -> 123.123

console.log( vm.mcc_numbers )  //  ->123

if ( vm.mcc_number == 123456.123456 )

console.log( vm.mcc_number )  //  ->123456.123456

console.log( vm.mcc_numbers )  //  ->  123456;

细心的人可能还发现了,我们利用 method{ toInt:function() }其实也达到了相同的效果,那么这两种写法的区别在哪里呢??

我们来试着理解一下,上面提到计算属性是动态输出,那么它是根据 mcc_number 的变化而变化的,换言之,它随着 data 的数据而变化

我们可以把data当成 computed 的数据源,那么当data没有发生变化的时候,data中的数据就会被缓存;而filters和method不一样就在于

filters和method中都是一个方法,它们每次都会运行一次这个方法(上面提到,computed中的mcc_number是一种属性);所以善于计算属性

在某些情况下就会提高开发效率。

举一个例子:

compute{

  date : function() {

    return Data.now()

}

}

这个例子没有依赖任何的data数据,所以在data数据变化之前,它会一直缓存住第一个数据,而不用每次都要再运行一次拿到数据。

这些东西感觉陌生? ALL right~ 我们来点熟悉的~~~

前面我们提到了  v-bind=”“ 可以用来绑定HTML的自有属性,那么现在我们来延展一下 v-bind=”“:

<div class=" vue " v-bind="{ active : bootstrap , current : directive }"></div>

new Vue({

  el:'',

  data{

    bootstrap : true,

    directive : false

}

})

注:

1.以上代码我们利用 v-bind 绑定了两个键值对,key为类名,而value为属性

2.我们在data中做一个判断,当属性为true的时候 显示对应的key,反之则不显示

3.v-bind=”{}“是可以和自带的class 连用的,于是输出结果为  -> <div class=" vue active "></div>

我们继续延展,上代码:

<div class="vue" v-bind="{ objectClass }"></div>

new Vue({

  el:'',

  data:{

    objectClass:{

      nav:true

      header:true

      active : true,

      current:false

      btn:false

      footer:false

}

}

})

不难看出,我们其实只是把v-bind所绑定的键值对换成了对象而已,然后在data中对对象中的class直接进行判断

这种写法比较适合class较多的情况。

有经验的小伙伴,肯定可以想到下一步该学习什么了,对,既然对象有了,键值对有了,那数组呢?

代码如下:

<div class = "vue" v-bind="{ [ mmClass, ccClass , ffClass] }"

new Vue({

  el:'',

  data{

    mmClass : active,

    ccClass : current,

    ffClass : nav

}

})

这种用数组的写法使用于切换多个class的情况,和之前的判断显不显示同一个类名有所不同

如果你依然需要判断是否显示,那么可以这样:

<div class = " vue "  v-bind = "{ [ activeOk ? active : ' ', mmClass]  }"

如果觉得这样的三元计算方法太过复杂,那么我们可以换一种方式:

<div class = " vue " v-bind = " { [ { active : bootstrap }, mmClass ] } "

如上,我们在数组中又加入了一个键值对,利用value来判断是否显示active

同样,思维活跃的小伙伴们又会发现,我们除了把它变成一个键值对,如果有更多的class,我们还可以把它变成一个对象来写,如下:

<div class = "vue"  v-bind = " { [ { objectClass }, mmClass ] } "

new Vue ({

  el:'',

  data : {

    objectClass : {

      active : true,

      current : false

}

    mmclass : nav

}

})

这样的写法可以理解为,前面固定一个或多个类名,而后面可以显示任意类名

我们学习完利用v-bind="{}"绑定class,那么同理,我们依然可以用这几种方法来绑定 Class, 这个留个大家一起来做,明天晚上我们一起来揭晓答案~~

顺便提一下,在vue中,某些需要加前缀的属性,比如 border-radius,transform等,vue会自动添加前缀~~~很方便哦~~~~~~

冰冻三尺,非一日之寒;学习东西也一样,我们一步一步稳扎稳打的走~~那么明天见~~~~~~good night~~~

Vue学习之路---No.2(分享心得,欢迎批评指正)的更多相关文章

  1. vue学习之路 - 4.基本操作(下)

    vue学习之路 - 4.基本操作(下) 简述:本章节主要介绍 vue 的一些其他常用指令. Vue 指令 这里将 vue 的指令分为系统内部指令(vue 自带指令)和用户自定义指令两种. 系统内部指令 ...

  2. Vue学习之路之登录注册实例代码

    Vue学习之路之登录注册实例代码:https://www.jb51.net/article/118003.htm vue项目中路由验证和相应拦截的使用:https://blog.csdn.net/wa ...

  3. Vue学习之路---No.4(分享心得,欢迎批评指正)

    这里说声抱歉,周末因为有其他事,没有更新博客,那么我们今天继续上周5的说. 老规矩,先回顾一下上一次的重点: 1.利用V-if和v-else来提到show()和hide(),同时要记住,v-else一 ...

  4. JAVA学习之路与大家分享

    这是我四年以前总结的JAVA学习之路,希望对初学者或想从事JAVA开发的人有帮助. 本人是软件工程专业出身,先后学过C.C++.JAVA.VB.delphi等等开发语言以及网络相关管理技术.哎,好久不 ...

  5. Vue学习之路第一篇(学习准备)

    1.开发工具的选择 这个和个人的开发习惯有关,并不做强求,厉害的话用记事本也可以.但是我还是建议用人气比较高的编辑工具,毕竟功能比较全面,开发起来效率比较高. 我之前写前端一直用的是sublimete ...

  6. Vue学习之路---No.6(分享心得,欢迎批评指正)

    我们还是先回顾一下上一次的重点: 1.事件绑定,我们可以对分别用方法和js表达式对事件进行处理 2.当方法名带括号的时候,在方法中一定要传参:而不带括号的时候,vm会自动配置默认event 3.各类事 ...

  7. Vue学习之路---No.7(分享心得,欢迎批评指正)

    老规矩,先回顾一下上回的重点: 1.对于input框,若为单选框,如果没有对其设置value,那么其checked的值将在true Or false之间切换:如果设置了value,那么将会切换valu ...

  8. Vue学习之路---No.3(分享心得,欢迎批评指正)

    同样的,我们先来回顾一下昨天学习的内容: 1.利用v-once来组织双向绑定 2.filter{}过滤器的使用(详情请看上一章) 3.computed(计算属性),利用computed属性实现filt ...

  9. Vue学习之路---No.1(分享心得,欢迎批评指正)

    首先为了打消大家对Vue.js存在的顾虑,先通过大家所熟知的JQ作为对比. 都知道JQ的语法相对简单.清楚.使用方便.功能齐全: 那么Vue.js呢,同样的,Vue.js与JQ在很多地方都是相同之处, ...

随机推荐

  1. Jqgrid学习(转载)

    jqGrid API 全   JQGrid是一个在jquery基础上做的一个表格控件,以ajax的方式和服务器端通信. JQGrid Demo 是一个在线的演示项目.在这里,可以知道jqgrid可以做 ...

  2. js原生设计模式——2面向对象编程之闭包2

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  3. easyui弹出窗关闭前调用确认窗口,先关闭页面后调用弹出窗口

    弹出窗关闭的时候提示是否关闭,同时进行一些对应的方法调用, 然而在进行页面关闭调用的时候,往往页面关闭了,才弹出确认对话框, $.messager.confirm和panel的onBeforeClos ...

  4. Hybird应用开发实践(一)使用原生/cordova混合项目

    最近准备尝试hybird开发原生应用,因为公司的项目本来就是原生开发的,所以准备选择cordova作为webview嵌入原生项目的开发方式.这里就以mac上整合ios项目为例. 1. 创建cordov ...

  5. 解决xtrabackup command not found no mysqld group 问题

    现象:手动执行xtrabackup没问题,环境变量检查过也没问题.放到执行计划中 会报错: sh: xtrabackup_56: command not found innobackupex: Err ...

  6. Spring JdbcTemplate用法整理

    Spring JdbcTemplate用法整理: xml: <?xml version="1.0" encoding="UTF-8"?> <b ...

  7. AngularJS的五个超酷特性

    AngularJS是一个超棒的javascript框架,不单单对于开发人员来说非常有吸引力,对于UI设计师来说也同样出色.在这篇教程中,我们将简单的介绍AngularJS几个重量级必备特性,并且介绍它 ...

  8. 负载均衡软件LVS分析二(安装)

    一.  安装LVS软件 1.安装前准备工作操作系统:统一采用Centos4.4版本.地址规划,如表1所示:表1 更详细的信息如图2所示: 图2  LVS DR模式安装部署结构图 图2中的VIP指的是虚 ...

  9. Swiper.js使用遇到的问题总结onSlideChangeEnd回调偶尔触发,偶尔不触发等;

    Swiper 是一个开源免费的移动触摸插件. 在使用中遇到这样一个问题,记录一下. page 间切换效果 使用 fade 的时候,如果每个页面的大小不一样, 比如第一个页面全屏, 第二个页面比第一个小 ...

  10. java文件上传(单文件 多文件)与删除

    /** * 文件上传--单文件 * * @param request * @param response * @param path * 文件存放路径(path为WebApp\后面的内容) * @re ...