v-for语句使用注意要点: 1.v-for 是要加在要循环的节点上 2.改造标签属性值需要在属性值前面加’:’ 3.在声明节点内部都能拿到该变量 4. (:key)的使用 在数据里面加id 5.注意引用src时要在方法里用require包裹一下
getImgUrl(icon){ return require("@/assets/"+icon); }v-if语句: 1.v-if和v-else-if和v-else要使用在同级标签里面 2.v-if里面的值要在data里面声明
<topNav v-if="isone"></topNav> <banner v-else-if="istwo"></banner> <left v-else></left> <script> export default { data:function(){ return{ isone:false, istwo:ture } } } </script>v-show和v-if从浏览器上效果是一模一样的,但是v-show相当于css里的display:none;v-if是重新渲染,v-show只是隐藏起来
这里的key是css里面的样式,value是data声明的数据绑定。
<div class="bang" v-for="items in songhuabang" :key="items.id" :class="selectNav(items.id)"> </div> methods:{ selectNav: function(id){ if(id==="1"){ return "bianse"; } return ""; } } 在配合循环使用时应声明一个方法。为了实现子组件的复用,不能在子组件把数据写死,所以借助关键字props(和data是并列的)
export default { props:["navDatas"],//这里props里面是字符串数组 data:function(){ return{ isshow:false } } };在子组件的v-for循环里正常使用该key值(navDatas)
<div class="topNavdaohang"> <ul> <li v-for="item in navDatas" :key="item.id"><a :href="item.href"><i :class="'iconfont '+item.icon"> </i>{{item.navName}}</a></li> </ul> </div>在父组件的data里面把数据填充进去
export default { name: 'app', components: { topNav,banner,left,right }, data:function(){ return{ navDatas:[ { icon: "icon-1", id:"1", navName:"首页", href:"" },{ icon: "icon-shipin", id:"2", navName:"视频", href:"" },{ icon: "icon-faxian", id:"3", navName:"发现", href:"" },{ icon: "icon-ziyuan", id:"4", navName:"游戏", href:"" },{ icon: "icon-zhuce", id:"5", navName:"注册", href:"" },{ icon: "icon-denglu", id:"6", navName:"登陆", href:"" } ], } } } </script>最后一步在标签里引用就可以啦
<topNav :navDatas="navDatas"></topNav> //此时的:navDatas是子组件里的 props:["navDatas"], //后面的value值是父组件data里面自定义的数据名称子组件调父组件的方法
同样在子组件里声明props关键字,里面写进key值
props:["navDates","print1"]//这里的print1是key值在子组件的methods里面的方法里调用父类方法(注意和data一样,使用this关键字)
methods:{ print2:function(){ this.print(); return ""; } }在子组件里的标签调用该方法
<input type="text" placeholder="大家正在搜:快船战胜马刺" class="topNav input" @click="print1" >在父组件的methods里面声明父组件方法
methods:{ print:function(){ alert("子组件调父组件方法"); } }在父组件中将该方法添加到子组件标签中
<topNav :navDates="navDates" :print1="print"></topNav>在网页里会有打开网页视频自动播放等默认事件,在vue里需要引入mounted方法,它与data同级。
mounted:function(){ window.addEventListener("scroll",function(){ alert("vue初始化事件!"); }) }处理事件用mounted,处理数据用created