Web前端-Vue.js必备框架(四)

计算属性:

<div id="aaa">
{{ message.split('').reverse().join('') }}
</div>
<div id="b">
<p>dashu: "{{ aaaa}}"</p>
<p>dashu: "{{ ddd}}"</p>
</div>
var vm = new Vue({
el: '#b',
data: {
aaaa: 'Hello'
},
computed: {
ddd: function () {
return this.message.split('').reverse().join('')
}
}
})
<p>{{ rMessage() }}</p>

methods: {
rMessage: function () {
return this.message.split('').reverse().join('')
}
}

watch回调:

<div id="demo">{{ fullName }}</div>
var vm = new Vue({
el: '#demo',
data: {
firstName: 'da',
lastName: 'shu',
fullName: 'da shu'
},
watch: {
firstName: function (val) {
this.fullName = val + ' ' + this.lastName
},
lastName: function (val) {
this.fullName = this.firstName + ' ' + val
}
}
})
var vm = new Vue({
el: '#demo',
data: {
firstName: 'da',
lastName: 'shu'
},
computed: {
fullName: function () {
return this.firstName + ' ' + this.lastName
}
}
})
computed: {
fullName: {
// getter
get: function () {
return this.firstName + ' ' + this.lastName
},
// setter
set: function (newValue) {
var names = newValue.split(' ')
this.firstName = names[0]
this.lastName = names[names.length - 1]
}
}
}

数据发生变化,执行异步或开销大的操作:

// 绑定属性
<div v-bind:class="{ active: isActive }"></div> <div
class="static"
v-bind:class="{ active: isActive, 'text-danger': hasError }"
></div> data: {
isActive: true,
hasError: false
}
<div v-bind:class="classObject"></div>
data: {
classObject: {
active: true,
'text': false
}
}

计算属性:

<div v-bind:class="classObject"></div>
data: {
isActive: true,
error: null
},
computed: {
classObject: function () {
return {
active: this.isActive && !this.error,
'text-danger': this.error && this.error.type === 'fatal'
}
}
}
// 数组
<div v-bind:class="[activeClass, errorClass]"></div>
data: {
activeClass: 'active',
errorClass: 'text'
}

自定义组件:

Vue.component('my-component', {
template: '<p class="foo">Hi</p>'
}) <my-component class="boo"></my-component>
<div v-bind:style="styleObject"></div>
data: {
styleObject: {
color: 'red',
fontSize: '10px'
}
}

key的重要:

// 每次渲染key都会被重新渲染
<template v-if="loginType === 'username'">
<label>Username</label>
<input placeholder="username" key="username-input">
</template>
<template v-else>
<label>Email</label>
<input placeholder="email address" key="email-input">
</template>

v-if和v-show,v-if为销毁和重建,只有为真才渲染,v-show会渲染,频繁切换使用v-show。

key:

<div v-for="item in items" :key="item.id">
</div>

方法:

push();
pop();
shift();
unshift();
splice();
sort();
reverse();
Vue.set(object, key, value)

Vue.set(vm.userProfile, 'age', 27)

vm.$set(vm.userProfile, 'age', 27)

<my-component v-for="item in items" :key="item.id"></my-component>

<my-component
v-for="(item, index) in items"
v-bind:item="item"
v-bind:index="index"
v-bind:key="item.id"
></my-component>

事件修饰符:

.stop
.prevent
.capture
.self
.once
.passive

// 点击事件将只会触发一次
<a v-on:click.once="doThis"></a>

.enter
.tab
.delete
.esc
.space
.up
.down
.left
.right
.ctrl
.alt
.shift
.meta
.left
.right
.middle
<input v-model="message" placeholder="dashucoding">
<p> {{ message }}</p>

修饰符:

.lazy input事件触发后将输入框的值与数据进行同步
<input v-model.lazy="msg">
<input v-model.number="age" type="number"> 用户的输入值转为数值类型
过滤输入的首尾空白字符 <input v-model.trim="msg">
Vue.component('blog', {
props: ['title'],
template: '<h3>{{ title }}</h3>'
})

结言

好了,欢迎在留言区留言,与大家分享你的经验和心得。

感谢你学习今天的内容,如果你觉得这篇文章对你有帮助的话,也欢迎把它分享给更多的朋友,感谢。

作者简介

达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文章,会上瘾!,帮你成为更好的自己。长按下方二维码可关注,欢迎分享,置顶尤佳。

Web前端-Vue.js必备框架(四)的更多相关文章

  1. Web前端-Vue.js必备框架(五)

    Web前端-Vue.js必备框架(五) 页面组件,商品列表组件,详情组件,购物车清单组件,结算页组件,订单详情组件,订单列表组件. vue-router 路由 vuex 组件集中管理 webpack ...

  2. Web前端-Vue.js必备框架(三)

    Web前端-Vue.js必备框架(三) vue是一款渐进式javascript框架,由evan you开发.vue成为前端开发的必备之一. vue的好处轻量级,渐进式框架,响应式更新机制. 开发环境, ...

  3. Web前端-Vue.js必备框架(二)

    Web前端-Vue.js必备框架(二) vue调式工具vue-devtools 过滤器:vue.js允许你自定义过滤器,可被用作一些常见的文本格式化. mustache插值和v-bind表达式. vu ...

  4. Web前端-Vue.js必备框架(一)

    Web前端-Vue.js必备框架(一) <!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  5. web前端——Vue.js基础学习

    近期项目的前端页面准备引入Vue.js,看了网上一些简介,及它和JQuery的对比,发现对于新入门的前端开发来说,Vue 其实也是比较适用的一个框架,其实用性不比JQuery差,感觉还挺有意思,于是研 ...

  6. Web - 前端 Vue.js (1)

    Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的.相比于Angular.js,Vue.js提供了更加简洁.更易于理解的API,使得我们能够快速地上手并使 ...

  7. web前端——Vue.js基础学习之class与样式绑定

    打着巩固 css 知识的旗号开始了对 vue 样式绑定的研究,相比前一篇的 demo,本次内容多了各种样式在里面,变得稍微花哨了些,话不多说,直接上代码吧: <html> <head ...

  8. web前端Vue+Django rest framework 框架 生鲜电商项目实战✍✍✍

    web前端Vue+Django rest framework 框架 生鲜电商项目实战  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频 ...

  9. web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程 ☝☝☝

    web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程    web前端Vue+Django rest framework 框架 生鲜电商项目实战视频教程 学习 ...

随机推荐

  1. (详细)华为P8 GRA-UL00的Usb调试模式在哪里开启的方法

    经常我们使用Pc通过数据线连接上安卓手机的时候,如果手机没有开启usb开发者调试模式,Pc则没能够成功检测到我们的手机,有时候我们使用的一些功能较强的应用软件好比之前我们使用的一个应用软件引号精灵,老 ...

  2. OpenCV-Python-图像梯度

    图像梯度 我们知道一阶导数可以用来求极值.把图片想象成连续函数,因为边缘部分的像素值与旁边的像素明显有区别,所以对图片局部求极值,就可以得到整幅图片的边缘信息.不过图片是二维的离散函数,导数就变成了差 ...

  3. requireJS简单应用

    项目结构目录: Html页面 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> < ...

  4. 【JAVA】高并发优化细节点

    高并发优化细节点: 微服务化 如何发现系统瓶颈?   如何高效利用有限内存: 使用基本类型 使用数组,不用集合 自定义map与数据结构   Integer—>int, Set<Intege ...

  5. System.TimeoutException: The operation requested on PersistentChannel timed out

    这个异常是在使用EasyNetQ时,遇到的问题,找了两个小时. 详细错误 Error:System.TimeoutException: The operation requested on Persi ...

  6. 简易promise的实现(一)

    code 最近在思考promise的实现原理 于是准备自己写一个简单的demo 一开始想到的问题有两个 1.链式调用 2.异步顺序执行 -------------------------------- ...

  7. 神器PHPStorm个人最常用快捷键

    PHPStorm是目前PHP开发者最常用的IDE之一,善用快捷键可以极大地提升效率,网上有很多盘点,多而全,但很多要么不实用,要么操作不方便,下面盘点一下个人平时最常用的,亲测有效. CTRL+N 查 ...

  8. python--random库基本介绍

    random库是使用随机数的Python标准库 python中用于生成伪随机数的函数库是random 因为是标准库,使用时候只需要import random random库包含两类函数,常用的共9个 ...

  9. Linux学习之基本操作命令

    目录基本操作命令 列目录内容ls ls  [options]  [files]  #options是可选参数 常用可选参数:-a 所有文件及目录 -A 等同于-a,但是不列出.以及..   -l 长格 ...

  10. 与下位机或设备的通信解析优化的一点功能:T4+动态编译

        去年接触的一个项目中,需要通过TCP与设备进行对接的,传的是Modbus协议的数据,然后后台需要可以动态配置协议解析的方式,即寄存器的解析方式,,配置信息有:Key,数据Index,源数据类型 ...