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 属性,换行起作用了 推荐答案