目录javascript
# 有一个200x200矩形框wrap,点击wrap自己,记录点击次数,若是是1次wrap为pink色,2次wrap为green色,3次wrap为cyan色,4次从新回到pink色,依次类推
<div class="wrap" @click="actionFn" :style="{backgroundColor: bgColor}">{{ count }}</div>
methods: { actionFn() { this.count ++; this.bgColor = this.colorArr[this.count % 3] // 0 % 3 余 0 // 1 % 3 余 1 .... } }
<!--v-model='变量' 能够完成双向绑定--> <!--变量值与表单标签的value相关--> <input type="text" name="user" placeholder="输入帐号" v-model="v1"> <input type="text" name="password" placeholder="输入密码" v-model="v1"> <!--v-model绑定的变量值能够影响到表单标签的值 反过来表单标签的值也能够影响变量的值-->
<!--数字之间的加减 例如字符串和num 能够在字符串前加上+便可转换成num-->
男:<input type="radio" name="sex" value="male" v-model="v2"> 女:<input type="radio" name="sex" value="female" v-model="v2"> {{ v2 }} <!--v2的值是单选框的value-->
是否赞成:赞成 <input type="checkbox" name="agree" v-model="v3"> {{ v3 }} <!--v3拿到的是布尔值 -->
爱好:<br> 男:<input type="checkbox" name="hobbies" value="male" v-model="v4"> 女:<input type="checkbox" name="hobbies" value="female" v-model="v4"> 哇塞:<input type="checkbox" name="hobbies" value="other" v-model="v4"> {{ v4 }} <!--拿到的是一个数组 [ "male", "female" ] --> <!--可是你必须给个数组-->
data: { v1: '123', // v-model v2: 'male', // 单选框 v3: false, // 单一复选框 v4: ['male', 'female'] // 复选框 }
v-show
='布尔值' v-if
='布尔值'css
v-if | v-else-if | v-else
v-show
和 v-if
之间的区别:html
// v-show='布尔值' 隐藏时:采用display:none进行渲染 // v-if='布尔值' 隐藏时:不在页面中渲染(保证不渲染的数据泄露)
<div class="box r" v-if="page === 'r_page'"></div> <div class="box b" v-else-if="page === 'b_page'"></div> <div class="box g" v-else></div> <!--不成立就不会渲染!!-->
# 当网络较慢,网页还在加载 Vue.js ,而致使 Vue 来不及渲染,这时页面就会显示出 Vue 源代码。咱们可使用 v-cloak 指令来解决这一问题。
js
不变,在 div
中加入 v-cloak
指令java
<div id="app" v-cloak> {{context}} </div>
[v-cloak]{ display: none; }
<!--循环指令:v-for="ele in string|array|obj" -->
<i v-for="c in string">{{ c }} </i> <!--string 如今为字符串 咱们能够直接拿到 {{ c }}-->
<i v-for="(c, i) in string">{{i}}:{{c}</i> <!--c 为值 i 为索引-->
<div v-for="e in arrag">{{ e }}</div>
<div v-for="(e, i) in arrag">{{ i }}:{{ e }}</div> <!--e 为值 i 为索引-->
<div v-for="v in obj">{{ v }}</div> <!--v 为值-->
<div v-for="(v, k, i) in people">{{ i }} - {{ k }}:{{ v }}</div> <!--v 为值--> <!--k 为键--> <!--i 为索引-->
<input type="text" v-model="comment"> <button type="button" @click="send_msg">留言</button> <ul> <li v-for="(msg, i) in msgs" @click="delete_msg(i)">{{ msg }}</li> </ul>
data: { comment: '', msgs: localStorage.msgs ? JSON.parse(localStorage.msgs) : [], }, methods: { send_msg() { // 将comment添加到msgs数组中:unshift push 首尾增 | shift pop 首尾删 // this.msgs.push(this.comment); // 数组操做最全方法:splice(begin_index, count, ...args) // 从第0位开始 操做2位 操做内容为 args // this.msgs.splice(0, 2); if (!this.comment) { alert('请输入内容'); return false; } this.msgs.push(this.comment); this.comment = ''; localStorage.msgs = JSON.stringify(this.msgs); }, delete_msg(index) { this.msgs.splice(index, 1); localStorage.msgs = JSON.stringify(this.msgs); } }
// 前台数据库 // localStorage: 永久存储 // sessionStorage:临时存储(所属页面标签被关闭后,清空) // 存 // localStorage.n1 = 10; // sessionStorage.n2 = 20; // 取 // localStorage.n1 // sessionStorage.n2 // 数组等类型须要先序列化成JSON // localStorage.arr = JSON.stringify([1, 2, 3]); // JSON.parse(localStorage.arr) // 清空数据库 // localStorage.clear();
delimiters: ['[{', '}]'], // 修改插值表达式符号
<div id="app"> {{ msg }} [{ msg }] <!--修改事后的--> </div>
<p>{{ num | f1 }}</p>
filters:{ // 传入全部要过滤的条件,返回值就是过滤的结果 f1 (num) { return num * 10; }, }
<p>{{num , num2 | f2 }}</p>
filters:{ // 传入全部要过滤的条件,返回值就是过滤的结果 f2(num, num2){ // 接受两个参数 return num * num2 }, }
<p>{{ num , num2 | f2 | f3 }}</p>
filters:{ f3(num){ return num * 3 }, }
一、computed计算属性能够声明 方法属性(方法属性必定不能在data中重复声明)
二、方法属性 必须在页面中渲染,才会启用绑定的方法,方法属性的值就是绑定方法的返回值
三、绑定的方法中出现的全部变量都会被监听,任何一个变化发生值更新都会从新出发绑定方法,从而更新方法属性的值
案例:python
<input type="text" value="" v-model="v1"> <input type="text" value="" v-model="v2"> <p>{{ result }}</p>
computed:{ result(){ this.v1; this.v2; return +this.v1 + +this.v2; } }
通常用来解决的问题:一个变量值依赖于多个变量
一、监听的属性须要在data中声明,监听方法不须要返回值
数据库
二、监听的方法名就是监听的属性名,该属性值发生更新时就会回调监听方法
数组
三、监听方法有两个回调参数:当前值,上一次值
网络
案例:session
<p>姓名:<input type="text" v-model="full_name"></p> <p>姓:{{ first_name }}</p> <p>名:{{ last_name }}</p>
data:{s full_name:'', first_name:'', last_name:'' }, watch:{ full_name(n,i){ console.log(n, i); name_arr = n.split(''); this.first_name = name_arr[0]; this.last_name = name_arr[1]; } }
解决的问题:多个变量值依赖于一个变量值