Vue基础篇一

Vue指令

Vue的指令directive很像我们所说的自定义属性,指令时Vue模板中最常用的功能,它带有v-前缀,功能是当表达式改变的时候,相应的行为作用在DOM上.

<div id="app">
<p v-text="a"></p>
<div v-html="b"></div>
</div> <script>
const app = new Vue({
el: "#app",
data: {
a: "A",
b: `<h1>B</h1>`
}
})
</script>

v-text, v-html

<div id="app">
用户名:
<input type="text" v-model.lazy.trim="name">
手机号:
<input type="text" v-model.number="phone">
<pre>{{name}}</pre>
{{typeof phone}} <textarea name="" id="" cols="30" rows="10" v-model="article"></textarea> {{article}} <select v-model="from">
<option value="1">河北</option>
<option value="2">山西</option>
</select> <select v-model="where" multiple>
<option value="1">上地</option>
<option value="2">西二旗</option>
<option value="3">三里屯</option>
</select> {{from}}
{{where}}
</div>
<script>
// input
// textarea
// select const app = new Vue({
el: "#app",
data: {
name: "",
phone: "",
article: "这是一大段文本~~~",
from: null,
where: [] }
})
</script>

v-model

<div id="app">
<h1>展示你们的爱好</h1>
<ul>
<li v-for="hobby in hobby_list">{{hobby}}</li>
</ul>
<h1>展示你们喜欢吃的食物</h1>
<ul>
<li v-for="food in food_list">{{food.name}}它的价格是: {{food.price}}</li>
</ul>
</div>
<script>
const app = new Vue({
el: "#app",
data: {
hobby_list: ["美女", "LOL", "吃鸡"],
food_list: [
{
name: "臭豆腐",
price: 6,
},
{
name: "榴莲",
price: 100,
}
]
}
})
</script>

v-for

    <style>
.active{
background-color: red;
width: 100px;
height: 100px;
}
</style>
</head>
<body>
<div id="app">
<a :href="path">@陈润</a>
<a v-bind:href="path">@陈润</a>
<div v-bind:class="{active: show}">盒子</div>
</div>
<script>
const app = new Vue({
el: "#app",
data: {
path: "http://www.baidu.com",
show: false
}
})
</script>

v-bind

    <style>
.active{
background: red;
width: 100px;
height: 100px;
}
</style>
</head>
<body>
<div id="app">
<a :href="path">@chenrun</a>
<button @click="on_click">点我显示盒子的样式</button>
<div :class="{active: show}">盒子</div>
<div v-on="{mouseenter: onMouseenter, mouseleave: onMouseleave}">鼠标事件</div>
</div>
<script>
const app = new Vue({
el: "#app",
data: {
path: "http://www.baidu.com",
show: false
},
methods: {
on_click: function() {
this.show = ! this.show
},
onMouseenter: function() {
console.log("鼠标移入了")
},
onMouseleave: function() {
console.log("鼠标移除")
}
}
})
</script>

v-on

<div id="app">
<div v-if="role == 'vip'">
<h1>欢迎会员登陆</h1>
</div>
<div v-else-if="role == 'vvip'">
<h1>您的专属秘书为您服务</h1>
</div>
<div v-else>
<p>gun~~~~</p>
</div>
</div>
<script>
const app = new Vue({
el: "#app",
data: {
role: "vip",
}
})
</script>

v-if

<div id="app">
<button @click="on_click">点我</button>
<p v-show="show">Alex DSX</p> <p v-if="a == 'if_show'">DSX</p>
<p v-else>Alex</p>
</div>
<script>
const app = new Vue({
el: "#app",
data: {
show: false,
a: "if_show"
},
methods:{
on_click: function() {
this.show = ! this.show
}
}
})
//if appendChild
//show display
</script>

v-show

<div id="app">
用户名: <input type="text" v-model.lazy.trim="username"><br>
{{username}}
手机号: <input type="text" v-model.number="phone"><br>
{{phone}}
</div>
<!--//main.js-->
<script>
var app = new Vue({
el: '#app',
data: {
username: "",
phone: "",
}
})
</script>

修饰符

    <style>
.active{
width: 100px;
height: 100px;
border: solid 1px red;
background: #eeeeee;
}
</style>
</head>
<body>
<div id="app">
<div class="active" v-pin.right.bottom="show"></div>
</div>
<script>
Vue.directive("pin", function(el, binding){
console.log(el);
console.log(binding);
let val = binding.value;
let positions = binding.modifiers;
if(val){
for(let key in positions){
el.style.position = "fixed";
console.log(key);
el.style[key]=0;
}
}else{
el.style.position = "static";
}
});
const app = new Vue({
el : "#app",
data: {
show: true,
}
})
</script>

自定义指令

<div id="app">
<table border="1">
<thead>
<th>学科</th>
<th>分数</th>
</thead>
<tbody>
<tr>
<td>数学</td>
<td><input type="text" v-model.number="math"></td>
</tr>
<tr>
<td>英语</td>
<td><input type="text" v-model.number="english"></td>
</tr>
<tr>
<td>物理</td>
<td><input type="text" v-model.number="physics"></td>
</tr>
<tr>
<td>总分</td>
<td>{{sum_num}}</td>
</tr>
<tr>
<td>平均分</td>
<td>{{average}}</td>
</tr>
</tbody>
</table>
</div>
<script>
const app = new Vue({
el: "#app",
data: {
math: 95,
english: 55,
physics: 100,
},
computed: {
sum_num: function(){
let total = this.math + this.english + this.physics;
return total
},
average: function(){
let ret = Math.round(this.sum_num/3);
return ret
} }
})
</script>

计算属性

Vue计算属性

我们的模板表达式非常遍历,但是逻辑复杂的时候,模板会难以维护,vue提供了计算机属性.

我们用方法也能达到效果,那么我们为什么要计算属性呢~

其实在vue中方法和计算属性达到的效果是一样的,但是计算属性时基于依赖进行缓存的.

只有依赖的数据发生改变的时候,才会重新执行计算属性的函数, 每次调用都会从缓存中拿之前算好的数据.

而方法时没调用一次,执行一次.

Vue过滤器

过滤器时在数据到达用户的最后异步进行简单的过滤处理,复杂的还要用计算属性或者方法.

<div id="app">
<div>
<p>价格展示</p>
<input type="text" v-model="price">
{{price | currency('USD')}}
</div>
<div>
<p>换算</p>
<input type="text" v-model="meters">
{{meters | meter}}
</div>
</div>
<script>
Vue.filter('currency', function (val, unit){
console.log(val);
console.log(unit);
val = val || 0;
var ret = val + unit;
return ret
});
Vue.filter('meter', function(val){
val = val || 0;
return (val/1000).toFixed(2) + "米"
});
new Vue({
el: "#app",
data: {
price: 10,
meters: 10,
}
})
</script>

过滤器

Vue基础以及指令, Vue组件的更多相关文章

  1. Vue基础以及指令

    Vue 基础篇一   一.Vue框架介绍 之前大家学过HTML,CSS,JS,JQuery,Bootstrap,现在我们要学一个新的框架Vue~ Vue是一个构建数据驱动的web界面的渐进式框架. 目 ...

  2. (day65、66)Vue基础、指令、实例成员、JS函数this补充、冒泡排序

    目录 一.Vue基础 (一)什么是Vue (二)为什么学习Vue (三)如何使用Vue 二.Vue指令 (一)文本指令 (二)事件指令v-on (三)属性指令v-bind (四)表单指令v-model ...

  3. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十七 ║Vue基础:使用Vue.js 来画博客首页+指令(一)

    缘起 书说前两篇文章<十五 ║ Vue前篇:JS对象&字面量&this>和 <十六 ║ Vue前篇:ES6初体验 & 模块化编程>,已经通过对js面向对 ...

  4. Vue基础-渲染函数-父子组件-传递数据

    Vue 测试版本:Vue.js v2.5.13 做了个 demo,把父子组件的数据都绑定到 Vue 实例 app 上,注释中的 template 相对好理解些 <div id="app ...

  5. Vue基础-作用域插槽-列表组件

    Vue 测试版本:Vue.js v2.5.13 Vue 官网介绍作用域插槽时, 在 2.5.0+,slot-scope 能被用在任意元素或组件中而不再局限于 <template>. 作用域 ...

  6. Vue基础(三)---- 组件化开发

    基本结构: ◆1.组件化开发思想 ◆2.组件注册 ◆3.Vue调试工具用法 ◆4.组件间数据交互 ◆5.组件插槽 ◆6.基于组件的案例   ◆1.组件化开发思想 优点: 提高开发效率 方便重复使用 简 ...

  7. 前端-Vue基础3(父子组件交互)

    1.子组件往父组件传值 点击子组件的值,子组件自增,父组件的值也跟着自增 通过:this.$emit('change')方法向父组件暴露事件,在子组件中引用,可以调用父组件的方法 点击子组件触发cli ...

  8. Vue基础之初识Vue

    Vue特点及优点 小巧,压缩后体积17KB: 渐进式,不需要一口吃成大胖子,一上来就用所有的东西,可以一步一步.有阶段的先吃成小胖子: 数据驱动,双向数据绑定,MVVM模式,详见下一段 指令,例如v- ...

  9. Vue基础进阶 之 Vue生命周期与钩子函数

    Vue生命周期 Vue生命周期:Vue实例从创建到销毁的过程,称为Vue的生命周期: Vue生命周期示意图:https://cn.vuejs.org/v2/guide/instance.html#生命 ...

随机推荐

  1. TF随笔-3

    >>> import tensorflow as tf>>> node1 = tf.constant(3.0, dtype=tf.float32)>>& ...

  2. HAWQ取代传统数仓实践(十七)——事实表技术之累积度量

    累积度量指的是聚合从序列内第一个元素到当前元素的数据,例如统计从每年的一月到当前月份的累积销售额.本篇说明如何在销售订单示例中实现累积月销售数量和金额,并对数据仓库模式.初始装载.定期装载做相应地修改 ...

  3. Android快速开发-选项卡

    介绍 几行代码实现Android选项卡界面,支持标准底部Tab自定义视图选项卡,头部文字选项卡. 底部自定义视图选项卡 先来看看实现下图中的效果我们代码应该怎么写? 实现上图效果只需以下代码: pub ...

  4. ip分包研究-以UDP为例

    原文 http://www.jianshu.com/p/741cb12ab0c9 测试环境: 利用iOS的NE从TUN抓取IP packets,如下代码分析ip包: uint16_t iphid = ...

  5. Git commit 信息标准和丢弃必须要的commit

    /***************************************************************************** * Git commit 信息标准和丢弃必 ...

  6. Linux多进程多线程例子

    看了apue3,关于进程线程和进程间通信写了一个例子,方便自己理解相关知识,备忘. #include <stdlib.h> #include <stdio.h> #includ ...

  7. 微软发布WCF教程及大量示例

    继前面 微软公司发布Windows Communication Foundation (WCF)和Windows CardSpace的示例程序之后,微软今天又发布了WF的教程和大量示例,对于学习WF的 ...

  8. FastAdmin 在 CRUD 时出现 exec() has been disabled for security reasons 怎么办?

    FastAdmin 在 CRUD 时出现 exec() has been disabled for security reasons 怎么办? 有小伙伴提问 FastAdmin 在 CRUD 时出现 ...

  9. YII框架安装过程-数据库访问

    1.电脑上原来安装了phpstudy.关掉phpstudy,启动wamp,虽启动成功,但仍然无法使用phpmyadmin登录数据库管理页面. 2.查看到系统服务有mysql服务,检查属性均为emsoa ...

  10. 洛谷 1099 ( bzoj 1999 ) [Noip2007]Core树网的核

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1999 <算法竞赛进阶指南>346页.https://www.cnblogs.co ...