Vue项目日常BUG收录

200 阅读1分钟

ElementUI el-tabs tab页切换时进行拦截判断当前页面表单是否保存

<el-tabs type="card" v-model="activeName" :before-leave="tabsBefore">
</el-tabs>

给el-tabs标签加上 :before-leave 属性,自定义拦截方法,这里我们定义方法名为tabsBefore

tabsBefor方法里代码如下:

async tabsBefore (activeName, oldActiveName) {
    /* 
    * activeName: 即将跳转进入的tabs标签栏的name
    * oldActiveName: 当前页Tabs标签栏的name
    * 因为el-tabs的点击效果,如果不使用Promise方式,则tabs标签页还是会正常切换名字
    */
    var p = new Promise((resolve, reject) => {
        this.$confirm('当前有尚未保存的表单项,是否确认离开当前页面?', '提示', {
            confirmButtonText: '确定',
            cancelButtonText: '取消',
            type: 'warning'
        }).then(() => {
            // this.handleClick({activeName: activeName}) 这里是我的页面逻辑,在这里可以根据自己项目的业务逻辑调整,点击确定的时候,正常跳转
            resolve()
        }).catch(err => {
            // 点击取消的时候,你可以在这儿做些操作
            reject(err)
        })
    })
    return p
}

// 总结: 使用Promise 通过返回resolve() reject()的方式来拦截el-tabs的跳转。(项目里已经实测可用)

uni-app textarea输入换行,回显的时候,换行失效,没有渲染出来,CSS解决

// 代码逻辑为腾讯即时语音TIM发送文字逻辑(可忽略,this.inputValue为textarea绑定的v-model)
let message = this.$tim.createTextMessage({
	to: timIds,
	conversationType: this.$TIM.TYPES.CONV_C2C,
	// 消息优先级,用于群聊(v2.4.2起支持)。如果某个群的消息超过了频率限制,后台会优先下发高优先级的消息,详细请参考:https://cloud.tencent.com/document/product/269/3663#.E6.B6.88.E6.81.AF.E4.BC.98.E5.85.88.E7.BA.A7.E4.B8.8E.E9.A2.91.E7.8E.87.E6.8E.A7.E5.88.B6)
	// 支持的枚举值:TIM.TYPES.MSG_PRIORITY_HIGH, TIM.TYPES.MSG_PRIORITY_NORMAL(默认), TIM.TYPES.MSG_PRIORITY_LOW, TIM.TYPES.MSG_PRIORITY_LOWEST
	// priority: TIM.TYPES.MSG_PRIORITY_NORMAL,
	payload: {
		text: this.inputValue
	}
});
// 先PUSH消息到聊天列表
_this.list.push({text: _this.inputValue,sendErr: false, position: 'right',img: uni.getStorageSync('myimgHttpsUrl'),type:'text'})
_this.inputValue = ''

// 2. 发送消息
let promises = this.$tim.sendMessage(message);
promises.then(function(imResponse) {
	// 发送成功
	console.log(`this.$tim.sendMessage==================>>>>>>>>>>>>>>>>>>>发送成功`);
	_this.pageToBottom()
}).catch(function(imError) {
	// 发送失败
	console.warn('sendMessage error:', imError);
});

//  回显部分
<view class="content-item-text" style="white-space: pre-wrap;" v-if="item.position == 'right' && item.text">{{item.text}}
	<viwe class="arrow"></viwe>
</view>
// 主要代码 white-space: pre-wrap

给容器加上样式style(推荐class) white-space: pre-wrap 属性,换行起作用了 推荐答案