使用vue给导航栏添加链接
如下面的导航栏,使用vue技术给该导航栏增加链接:
js代码为:
navigation:function(){ new Vue({ el: '#navUl', data: { menuData:{ '个人首页':'personal-home.html', '人才分析':'personal-analysis.html', '基本信息':'personal-info-base.html', '技能态度':'skill-attitude.html', '参与项目':'involved-project.html', '学习':'learn.html', '考勤':'work-attend.html', '生活福利':'welfare.html' } }, computed:{ curIdx:function(){ var curIdx = 0; $.each(this.menuData,function(k,v){ if(location.pathname.indexOf(v)!=-1){//说明包括(也就是当前页面) return false; }else{//==-1说明不包括(不是当前页面) curIdx++; } }); console.log(curIdx); return curIdx; } } }); }
html代码为:
<ul class="nav-ul" id="navUl"> <template v-for="(link,name,index) in menuData"> <li class="nav-li" v-bind:class="index==curIdx?'curr':''"><a :href="link">{{ name+'--'+index }}</a></li> </template> </ul>
说明:思路是,每一页都对应着一个index值,举例来说:当切换到基本信息页时,index=2,此时如果curIdx也等于2,那么index==curIdx,增加curr类,文字变红,而页面跳转是给文字增加了链接,不是点击事件造成的;
因此切换到个人首页时,curIdx==0;切换到人才分析页时,curIdx==1;切换到基本信息页时,curIdx==2;以此类推;
对于基本信息页:js文件中,循环this.menuData,首先当前链接不包括第一个链接personal-home.html的内容,所以location.pathname.indexOf(v)==-1,此时curIdx由0增加为1;
然后第二次循环,当前链接不包括第二个链接personal-analysis.html的内容,所以location.pathname.indexOf(v)==-1,此时curIdx由1增加为2;
然后第三次循环,当前链接包括第三个链接personal-info-base.html的内容,所以location.pathname.indexOf(v)!=-1,此时return出false,curIdx==2;
也就是说基本信息页的curIdx为2;此时index==curIdx,为当前增加curr类名;