赞
踩
https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js
https://cdn.jsdelivr.net/npm/vue@2
下载Vue2.0.js
<script>
new Vue(){
el: "#选择器",".选择器"....,
data:{
数据{变量,数组,对象....}
},有
methods:{
方法区
}
}
</script>
指令 | 说明 |
---|---|
v-bind | 动态绑定属性 |
v-if | 动态创建/删除 |
v-show | 动态显示/隐藏 |
v-on:click | 绑定事件 |
v-for | 遍历 |
| |
v-model | 双向绑定表单 |
v-html | 可赋html代码 |
v-bind:src | ==> :src |
v-on:click | ==> @click |
<button @click=“list_addData()”> |
<div :class="classObj">动态切换class-1-对象</div>
classObj:{
aa:true,
bb:true,
cc:false,
},
// vue2 解决方案, Vue.set(对象,属性,值)
==F12== Vue.set(vm.classObj,"dd",true) //新增 dd calss属性
<div :class="classArr">动态切换class-2-数组</div>
classArr:["aa","bb"],
==F12== vm.classArr.push('dd') //新增 dd class属性
==F12== vm.classArr.shift() //删除第一个 calss 属性
==F12== vm.classArr.splice(1,1)//删除下标为1的calss属性,删除一个
<div :style="styleObj">动态切换style-1-对象</div>
styleObj:{
backgroundColor:'red',
},
==F12== Vue.set(vm.styleObj,'fontSize','30px')
//新增 fontSize样式
<div :style="styleArr">动态切换style-2-数组</div>
styleArr:[{backgroundColor: 'yellow'}],
==F12== vm.styleArr.push({fontSize:'30px'})
//新增fontSize样式
<div id="box">
<!-- <div v-if="isCreated">111111111</div>-->
<!-- <div v-else>222222222</div>-->
<h2>所有订单</h2>
<ul>
<li v-for="item in dataList">
{{item.title}} <!-- -{{item.state}}-->
<span v-if="item.state===0">-未支付</span>
<span v-else-if="item.state===1">-代发货</span>
<span v-else-if="item.state===2">-已发货</span>
<span v-else>-已签收</span>
</li>
</ul>
</div>
<script> var vm = new Vue({ el: "#box", data:{ isCreated:false, dataList:[ { title:'动感小苦茶', state:0 ,//'未支付' }, { title:'动感大苦茶', state:1 ,//'代发货' }, { title:'情趣小苦茶', state:2 ,//'已发货' }, { title:'情趣大苦茶', state:3 ,//'已完成' }, ], }, }); </script>
<div id="box">
<template v-if="isCreated">
<div>111111</div>
<div>222222</div>
<div>333333</div>
</template>
</div>
<script>
new Vue({
el: "#box",
data:{
isCreated : true
}
/*
* template是一个包裹元素,不会真正创建在页面上.
* */
});
</script>
v-for | |
---|---|
v-for=“temp in dataList” | 没有 |
v-for=“temp of dataList” | 区别 |
<div id="box"> <!--数组遍历--> <ul> <li v-for="(temp,index) of dataList" :key="temp.id"> {{temp}}-{{index}} </li> </ul> <!--对象遍历--> <ul> <li v-for="(temp,key) in obj "> {{key}}-{{temp}} </li> </ul> <!--数字遍历--> <ul> <li v-for="temp in 10"> {{temp}} </li> </ul> </div>
<script>
new Vue({
el: "#box",
data:{
dataList:["111","222","333"],
obj:{
name: "Draven",
age: 18,
location: "love"
},
},
});
</script>
<div id="box"> <!--数组遍历--> <ul> <li v-for="(temp,index) of dataList" :key="temp.id"> {{temp}}-{{index}} </li> </ul> <!--对象遍历--> <ul> <li v-for="(temp,key) in obj "> {{key}}-{{temp}} </li> </ul> <!--数字遍历--> <ul> <li v-for="temp in 10"> {{temp}} </li> </ul> </div>
<script>
Vue.createApp({
data(){
return {
dataList:["111","222","333"],
obj:{
name: "Draven",
age: 18,
location: "love"
},
}
}
}).mount("#box")
</script>
<div id="box">
<input type="text" @input="handleInput()" v-model="myText">
<ul>
<li v-for="temp in test()" :key="temp">
{{temp}}
</li>
</ul>
<!-- {{ test() }}-->
</div>
<script>
new Vue({
el: "#box",
data:{
myText:"",
dataList:["aaa","bbb","ccc","ddd","eee","ace","add","aee","dee","cbe","cde","dfa"]
},
methods:{
test(){
return this.dataList.filter(temp=> temp.includes(this.myText));
},
}
});
</script>
直接触发代码
<button @click="count++">add-3-表达式</button>
方法事件处理器
写函数名 handleClick
<button @click="handleAdd2">add-2-函数名</button>
handleAdd2(evp){
this.count++
console.log(evp.target)
},
内联处理器方法
执行函数表达式 handleClick( e v e n t ) = = ( event) ==( event)==(event 事件对象)==
<button @click="handleAdd1($event,1,2,3)">add-1-函数表达式</button>
handleAdd1(evt,a,b,c){
this.count++
console.log(evt.target,a,b,c)
},
- `.stop`
- `.prevent`
- `.capture`
- `.self`
- `.once`
- `.passive`
<!-- 阻止单击事件继续传播(事件冒泡泡) --> <a v-on:click.stop="doThis"></a> <!-- 提交事件不再重载页面 --> <form v-on:submit.prevent="onSubmit"></form> <!-- 修饰符可以串联 --> <a v-on:click.stop.prevent="doThat"></a> <!-- 只有修饰符,阻止默认提交行为 --> <form v-on:submit.prevent></form> <!-- 添加事件监听器时使用事件捕获模式 --> <!-- 即内部元素触发的事件先在此处理,然后才交由内部元素进行处理 --> <div v-on:click.capture="doThis">...</div> <!-- 只当在 event.target 是当前元素自身时触发处理函数 --> <!-- 即事件不是从内部元素触发的 --> <div v-on:click.self="doThat">...</div>
<ul @click.self="handleUlClick">
<!--禁止事件冒泡-->
<li @click.stop="handleLiClick">1111</li>
<li @click="handleLiClick">2222</li>
<!--只可触发一次-->
<li @click.once="handleLiClick">3333</li>
<!--阻止a链接的默认行为-->
<a href="http://www.baidu.com" @click.prevent>跳转</a>
</ul>
.enter
.tab
.delete
(捕获“删除”和“退格”键).esc
.space
.up
.down
.left
.right
<!-- 只有在 `key` 是 `Enter` 时调用 `vm.submit()` -->
<input v-on:keyup.enter="submit">
.ctrl
.alt
.shift
.meta
.exact
注意:在 Mac 系统键盘上,meta 对应 command 键 (⌘)。在 Windows 系统键盘 meta 对应 Windows 徽标键 (⊞)。在 Sun 操作系统键盘上,meta 对应实心宝石键 (◆)。在其他特定键盘上,尤其在 MIT 和 Lisp 机器的键盘、以及其后继产品,比如 Knight 键盘、space-cadet 键盘,meta 被标记为“META”。在 Symbolics 键盘上,meta 被标记为“META”或者“Meta”。
<!-- 即使 Alt 或 Shift 被一同按下时也会触发 -->
<button v-on:click.ctrl="onClick">A</button>
<!-- 有且只有 Ctrl 被按下的时候才触发 -->
<button v-on:click.ctrl.exact="onCtrlClick">A</button>
<!-- 没有任何系统修饰符被按下的时候才触发 -->
<button v-on:click.exact="onClick">A</button>
.left
.right
.middle
//计算的属性
computed:{
myComputedName(){
console.log("计算属性")
return this.myName.substring(0,1).toUpperCase() + this.myName.substring(1);
}
}
watch:{
// es5 filter
myText(newVal){
console.log("改变了",newVal)
//模拟ajax异步延时状态
setTimeout(()=>{
this.dataList = this.original.filter(temp=> temp.includes(newVal))
},2000)
}
},
handleFetch(){
//json文件路径,或数据来源
fetch("./json/test.json")
//返回json数据
.then(res=>res.json())
//输出json数据对象
.then(res=>{
console.log(res)
})
//如果是psot请求,返回err报错信息
.catch(err=>{
console.log(err)
})
}
handleFetch({ //路径 fetch("**") //请求方式: post method:'post', //设置请求头 headers: { "Content-Type": "application/x-www-form-urlencoded" }, //form编码格式数据 key=value body: "name=kerwin&age=100" }) .then(res=>res.json()) .then(res=>{ log(res); })
handleFetch({ //路径 fetch(url地址) //请求方式: post method:'post', //设置请求头 headers: { "Content-Type": "application/json" }, //固定格式 json字符串编码 body: JSON.stringify({ name:"kerin", age:100 }) }) .then(res=>res.json()) .then(res=>{ log(res); })
https://m.maizuo.com/v5/#/films/nowPlaying
<button @click="handleFetch">ajax-fetch</button>
<ul>
<li v-for="(data,index) in dataList" :key="data.filmId">
<img :src="data.poster" alt="">
{{data.name}}
主演:
<span v-for="item in data.actors ">{{item.name}} </span>
</li>
</ul>
new Vue({ el:"#box", data:{ dataList:[], }, methods:{ handleFetch(){ fetch("./json/maoyan.json") .then(res=>res.json()) .then(res=>{ // console.log(res.data.films) this.dataList=res.data.films }) .catch(err=>{ console.log(err) }) }, }, })
axios数据第三方
要使用必须引入js文件
<div id="box">
<button @click="handleFetch">ajax-fetch</button>
<ul>
<li v-for="(data,index) in dataList" :key="data.filmId">
<img :src="data.poster" alt="">
{{data.name}}
主演:
<span v-for="item in data.actors ">{{item.name}} </span>
</li>
</ul>
</div>
new Vue({
el:"#box",
data:{
dataList:[],
},
methods:{
handleFetch(){
axios.get("./json/maoyan.json").then(res=>{
// console.log(res.data.data.films)
this.dataList=res.data.data.films
})
},
},
})
axios.post("****","name=Draven"&age="18")
axios.post("****",{name:"Draven",age:18})
json数据在1-沙漠风暴->03-fetch&axios->json->maizuo.json
<div id="box">
<button @click="handleAjax">click-ajax</button>
<ul>
<li v-for="item in dataList" :key="item.id">
<img :src="handleImg(item.img)" alt="">
{{item.nm}}
</li>
</ul>
</div>
new Vue({ el:"#box", data:{ dataList:[] }, methods:{ handleAjax(){ axios.get("./json/maizuo.json").then(res=>{ console.log(res.data.movieList) this.dataList=res.data.movieList }) }, handleImg(src){ // return src.replace("w.h/","")+"@1l_1e_1c_128w_128h" return src.replace("w.h","128.128") }, }, })
<img :src="item.img | imgFilter" alt="">
//声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/257300
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。