vue是一种采用MVVM(Model View View-Model)架构的Js框架
{{key}}:用于引用Vue内对应key的属性值(当 网络条件不佳时 可能导致浏览器看到源代码 ,即插值闪烁现象,此时可利用v-text标签代替)
<span>{{name}}</span> //用于在非标签属性位置引用Vue内属性名为name的值
<span v-text="name"></span>//此处采用v-text即可解决插值闪烁问题
配合v-on:click(…动作事件)使用(v-on:click.stop)
v-for可用于数组或者对象的遍历 :key 可以在遍历的对象发生改变时 html仅渲染改变的值(通过key所指定的唯一标识查找)进而能提高程序运行效率
数组结构的遍历
<ul>
<li v-for="(value,index) in users" :key="value.name">
编号:{{index+1}} 品牌: {{value.brand}} 型号:{{value.model}} 动力:{{value.power}}
</li>
</ul>//数组结构的遍历
对象结构的遍历
<ul>
<li v-for="(value,key,index) in user">
属性索引:{{index}} 属性名称:{{key}} 属性值:{{value}}
</li>
</ul>//对象结构的遍历
v-if&v-show能控制所在标签的隐藏与显示
v-if: v-if 底层通过删除对应的标签来实现标签的隐藏
<span v-if="visible">You can see me now by v-if to remove the tag !!!</span>
v-show:底层通过将对应标签的css display属性改为none来实现标签的隐藏
<span v-show="!visible">You can see me now by v-show to set the display to none!!!</span>
当进行一次性操作的时候可以采用v-if实现标签的隐藏(可以解决一定的安全隐患),当需要多次实现隐藏操作的时候可采用v-show来提升程序运行效率
利用v-bind:可实现标签的固有属性来引用Vue的内部属性(v-bind:可简写为:)
<div v-bind:class="{red:color,blue:!color}" style="width: 100px;height: 150px">
<a href="#" v-on:click="color=!color">click me to change bgc!</a>
</div>
其中:
const vueTest=new Vue({
el:"#app",
data:{
property1:"value1",
property2:"value2",
property3:"value3"
},
methods:{
fun1(params1,params2){
console.log(params1+params2)
}
},
created(){
console.log(this+"has been created")
},
computed:{
numCompute(){
let date = new Date(this.num);
return date.getFullYear()+"年"+date.getMonth()+"月"+date.getDay()+"日"
}
},
/*Vue属性监测*/
watch:{
/*非深度监测 仅监测对象的地址值是否发生改变*/
num(currentValue,previousValue){
alert("num has changed to "+currentValue+" from"+previousValue)
},
/*深度检测-可检测对象及其属性的变化*/
user:{
deep:true,
handler(currentValue,previousValue){
console.log(" name has changed to "+currentValue.name+"from "+previousValue.name)
}
}
},
components:{
}
})
Vue之间的组件关系大致可分为父组件,子组件,同级组件三种
子组件引用父组件属性:
子组件改变父组件属性
props的默认值
通过以下格式也可为props内的属性设置相关属性(默认值…)
props:{
num:{
type:String,//设置当前对象的类型
default:"defaultValue",//设置当前对象的默认值
requried:false
}
}
<div id="parentComponent">//自定义num属性的值为父组件的num属性
<child-component :num="num" v-on:addEvent="add()" v-on:reduceEvent="reduce()"></child-component>
</div>
//子组件 $emit()可触发子组件上对应的事件(此处即触发addEvent&reduceEvent事件)
const childComponent={
template:`<div>
<button v-on:click="$emit('addEvent')">add</button>
<button v-on:click="$('reduceEvent')">reduce</button>
read from parentComponent num={{num}}
</div>`,
props:["num"]
};
//父组件
const app=new Vue({
el:"#parentComponent",
data:{
num:0
},
props:[
"property1","property2"
],
components: {
childComponent
},
methods:{
add(){
this.num++;
},
reduce(){
this.num--;
}
}
});
本文地址:https://blog.csdn.net/andews/article/details/107368288
如对本文有疑问, 点击进行留言回复!!
vuejs (2)- Vue 生命周期 和 VueJS ajax
vue axios blob下载文件,文件下载失败将blob的错误信息转换成json格式
网友评论