记录项目中遇到的问题
router-link上无法触发点击事件
解决:改为@click.native="fn()"
导航点击增加当前状态,刷新不消失。
思路:
1、data
中添加数据isSelect
为默认当前状态
2、点击切换数据 => 切换当前状态
3、mounted
时查询路由name
更改isSelect
结构:
<router-link v-for="i in nav" :to='i.to' :key="i.id" @click.native="selectNav(i.name)">
<div class="img"><img :src="isSelect === i.name ? i.img_on : i.img" alt="i.title"></div>
<p :class="isSelect === i.name ? 'on' : ''">{{i.title}}</p>
</router-link>
数据(注意img
要加require
,否则会被解析为字符串):
isSelect: 'index',
nav: [
{
title: '首页',
name:'index',
to:'/index',
img: require('../../assets/images/index.png'),
img_on: require('../../assets/images/index-on.png')
},
{
title: '柜上',
name:'shop',
to:'/shop',
img: require('../../assets/images/shop.png'),
img_on: require('../../assets/images/shop-on.png')
},
{
title: '消息',
name:'msg',
to:'/msg',
img: require('../../assets/images/msg.png'),
img_on: require('../../assets/images/msg-on.png')
},
{
title: '我的',
name:'mine',
to:'/mine',
img: require('../../assets/images/person.png'),
img_on: require('../../assets/images/person-on.png')
}
]
方法(需要在路由中加入name):
methods:{
selectNav(name){
this.isSelect=name
}
},
mounted(){
this.isSelect = this.$route.name
}
显示余额时,无法准确显示小数点后两位
如我想显示0.00,而浏览器中最终显示0
查阅文档知道过滤器:可以实现。
Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化。过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 (后者从 2.1.0+ 开始支持)。过滤器应该被添加在 JavaScript 表达式的尾部,由“管道”符号指示:
<!-- 在双花括号中 -->
{{ message | capitalize }}
<!-- 在 `v-bind` 中 -->
<div v-bind:id="rawId | formatId"></div>
解决:
js:
export default {
data() {
return data
},
filters:{
keep_two_point(val){
val = Number(val)
return val.toFixed(2)
}
}
}
html:
<p>{{money|keep_two_point}}</p>
不能通过IP在其他终端(手机)访问
https://github.com/vuejs/vue-cli/issues/683
父组件添加scoped之后。解决在父组件中无法修改子组件样式问题。
实测第二种写法报错
Unrecognised input
可能是我用less
的原因。/deep/
可行。原文链接