@File
2019-10-08T09:28:32.000000Z
字数 4636
阅读 203
web
<script src="js/vue.js"></script>
new Vue({}) 基本格式
new Vue({// 绑定一个节点el: '#id',// 设置数据data() {return {name: '李大爷',age: 18}}})
new Vue({el: '#id',data() {return {}},// 设置方法methods: {method1() {},method2() {}}})
<div id="app"><input v-model="input1" type="text"><input v-model="input2" type="text"><input v-model="input3" type="text"></div><!-- js --><script>new Vue({el: '#app',data() {return {input1: '',input2: '',input3: ''}},watch: {// input3 值改变时,同时修改 input1 和 input2 的值input3: function(val) {this.input1 = val;this.input2 = val;}}})</script>
<div id="app"><input v-model="input1" type="text"><input v-model="input2" type="text"><input v-model="input3" type="text"></div><!-- js --><script>new Vue({el: '#app',data() {return {input1: '',input2: ''}},computed: {// 默认调用的是 get 方法/*input3: function() {return this.input1 +' '+ this.input2;}*/// 设置 set 方法// input3 被修改时,同时更新 input1 和 input2input3: {// get 中调用到的属性被修改时触发get: function() {return this.input1 +' '+ this.input2;},// 自身被修改时触发 watch 一样的效果set: function(val) {var names = val.split(' ');this.input1 = names[0];this.input2 = names[names.length - 1];}}}})</script>
created() vue构造函数mounted(){{}} 取值
<div id="app"><!-- 拿到 message 的值 --><p>{{ message }}</p></div><!-- js --><script>new Vue({el: '#app',data() {return {message: '李大爷'}}})</script>
v-text 赋值文本
<div id="app"><!-- 拿到 message 的值 --><div v-text="message"></div></div><!-- js --><script>new Vue({el: '#app',data() {return {message: '李大爷'}}})</script>
v-html 赋值标签
<div id="app"><!-- 拿到 message 的值 --><div v-html="message"></div></div><!-- js --><script>new Vue({el: '#app',data() {return {message: '<a href="https://cn.vuejs.org/">李大爷</a>'}}})</script>
v-show 判断显示
<div id="app"><!-- v-if="boolear" 决定是否显示<p>标签 --><p v-show="age < 20">{{ name }}</p></div><!-- js --><script>new Vue({el: '#app',data() {return {name: '李大爷'age: 18}}})</script>
v-if 条件判断
<div id="app"><!-- v-if="boolear" 决定是否输出<p>标签 --><p v-if="age < 18">{{ name }}</p><!-- else if --><p v-else-if="age == 18">{{ name }} 成年了</p><!-- else --><p v-else>不是 {{ name }}</p></div><!-- js --><script>new Vue({el: '#app',data() {name: '李大爷'age: 18}})</script>
v-on | @ 事件event.target 可以获取事件触发的对象事件修饰符
.stop:阻止事件冒泡
.prevent:提交事件不重载页面
.capture:添加事件侦听器时使用事件捕获模式
.self:只当事件在该元素本身(而不是子元素)触发时触发回调
.once:事件只能触发一次(2.1.4)
.passive:滚动行为将会立即触发(2.3.0)
<!-- v-on 格式:点击是调用 doSomething 方法 --><a id="app" v-on:click="doSomething"></a><!-- @ 格式:点击是调用 doSomething 方法 --><a id="app" @click="doSomething"></a><!-- js --><script>new Vue({el: '#app',methods: {doSomething() {alert('李大爷');}}})</script>
v-for 循环
<div id="app"><ul><!-- 方式一:只有 value --><li v-for="member in family">{{ member.name }}</li><!-- 方式二:完整格式(值,键,下标)--><li v-for="(member,key,index) in family" :key="index">{{ index }}-{{ member.name }}</li><!-- 方式三:按次数循环 --><li v-for="num in 10">{{ num }}</li></ul></div><!-- js --><script>new Vue({el: '#app',data() {return {family: [{ name: '李大爷' },{ name: '胡大妈' }]}}})</script>
v-model 数据绑定
<div id="app"><p>{{ message }}</p><input v-model="message"></div><!-- js --><script>new Vue({el: '#app',data() {return {message: ''}}})</script>
v-bind | :其他骚操作
:checked="num == 100"返回boolean值
:class="{ blue-btn:isBlue, red-btn:!isBlue }"根据isBlue响应式属性判断
:class="classObj"classObj里可以存多个属性
:class="classObj[btn, red-btn]"只拿其中两个属性的值
:class="classObj[btn, {blue-btn:isBlue}]"嵌套{}
:class="classObj[btn, isBlue? blue-btn: red-btn]"嵌套判断
<div id="app"><!-- 实际显示:<input type="hidden"> --><!-- 方式一: --><input v-bind:type="type"><!-- 方式二: --><input :type="type"></div><!-- js --><script>new Vue({el: '#app',data() {return {// 通过响应式参数改变input的类型type: 'hidden'}}})</script>
v-once 赋值一次,不动态修改
<div id="app"><!-- 不会修改 --><input v-once v-model="name" type="text"><!-- 被包含的子节点属性也不会修改 --><p v-once> {{ name }} </p><!-- 会被修改 --><input v-model="name" type="text"><input v-model="update" type="text"></div><!-- js --><script>new Vue({el: '#app',data() {return {name: '李大爷',update: ''}},watch: {// update 被修改时 同时修改 nameupdate: function(val) {this.name = val;}}})</script>
v-slot | # 插槽响应式更新: vue.data 中定义的属性更新时会对全局造成影响,动态改变所有被调用的地方,重写赋值。
- 对普通属性可以通过 "=" 直接修改
- 数组或对象中的属性需要使用方法修改(或者完全覆盖),"=" 不生效
push(elem...) 末尾添加一个或多个元素
unshift(elem...) 开头添加一个或多个元素
pop() 删除并获取最后一个元素
shift() 删除并获取第一个元素
splice(index,rmLen,elem...) 插入或替换一个或多个元素
sort(func(p1,p2)) 排序
reverse() 颠倒顺序
vm.$set | Vue.setvm.$set 实例方法,该方法是全局方法 Vue.set 的一个别名
let vm = new Vue({el: '#app',data() {return {arr: ['李大爷','胡大妈']map: {name: '李大爷'}}}});// 代替 vm.arr[0] = '李大爷888';vm.$set(vm.arr, 0, '李大爷888');// 代替 vm.arr = ['李大爷888','胡大妈666'];Vue.set(vm,'arr',['李大爷888','胡大妈666']);// 添加响应式属性// 注意:根属性无法添加和删除(根属性:arr、map)vm.$set(vm.map, 'age', 18);