赞
踩
watch: {
'arr[0]':function(val, old) { }
}
watch: {
'form.id':function(val, old) { }
}
把对象深拷贝一份,然后监听拷贝的对象
data: ()=> { return { curve: { min: { value: [0,1] } } } }, computed: { cloneCurve() { return cloneDeep(this.curve); // 解决监听对象时新旧数据一样的问题 } } watch: { cloneCurve: { handler(val, old) { console.log(val, old); }, deep: true, }, } }
给v-model加上修饰符.number
<el-input
v-model.number="curve.value"
style="width: 100px"
placeholder="请输入"
>
调用方法:this.$set( target, key, value )
target:要更改的数据源(可以是对象或者数组)
key:要更改的具体数据
value :重新赋的值
Vue.set(obj,key,value)
//Or
this.$set(obj.key,value)
如果对象数据很多,可以通过循环处理
this.info.each((item) => {
this.$set(this.newInfo, item.name, item.age)
})
console.log(this.newInfo)
如果数据层次太多,例如数组包对象,对象包数组,多层嵌套,会出现v-if调用失效,页面不重新渲染问题,解决办法为在数据处理完成之后调用$forceUpdate()发放:
this.$forceUpdate()
<a v-bind:[className]="class"> 错误示例 </a>
<a v-bind:[classname]="class"> 正确示例 </a>
解决方法1:在updated中获取(有网友说在beforeUpdate中用nextTick可以获取到,其实updated比beforeUpdate中的nextTick要先执行,所以在updated中能更早获取到。
解决方法2:上面的方式也不能适用于所有场景,比如初始化外部插件就不适用,因为每次更新data中的数据都会导致初始化,这并不是我们想要的,最后的解决方式是在created里的axios回调中用setTimeout延迟500~800秒再获取。
解决方法1:id命名需要谨慎,复用时需要考虑到冲突
解决方法2:使用ref代替id
报错写法:
div {
background: url(@/assets/images/test.png);
}
解决方法:在@前面加~符号
div {
background: url(~@/assets/images/test.png);
}
解决方法:在路由配置中加入下面代码
const originalPush = Router.prototype.push
Router.prototype.push = function push(location) {
return originalPush.call(this, location).catch(err => err)
}
ts版
//获取原型对象上的push函数
const originalPush = VueRouter.prototype.push;
//修改原型对象中的push方法
VueRouter.prototype.push = function push(location: any) {
return (originalPush.call(this, location) as any).catch((err: any) => err);
};
子组件用render(){}构建模版情况下,在父组件中给子组件加上v-if条件,某些时候条件变化就会报错找不到dom节点
解决方法:父组件有多个子组件的情况下,把该空模板子组件移到最前面就不报错了(这种方式虽然解决了问题,但具体原因还不知道)
解决方法:在vue.config.js里devServer对象下增加disableHostCheck: true
module.exports = {
devServer: {
disableHostCheck: true
}
}
解决方法1: 在build > webpack.base.conf.js 里面loader的字体文件limit值设大一些,至少要比字体文件大
解决方法2: 在build > webpack.base.conf.js 里面通过url-loader配置路径
解决方法: 在build > webpack.base.conf.js 里面通过file-loader配置路径
解决方法:3.x以上的版本太高,降到2.11.3及以下即可
npm install webpack-dev-server@2.11.3 --save-dev
解决方法:版本不匹配,将vue改成和vue-template-compiler一样的版本
PS C:\projects> npm install vue@2.6.10 -g
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。