...
 
Commits (3)
    https://gitcode.net/vk-uni/vk-uview-ui/-/commit/5eb4fcb916bca877bf3c5512b3ac32155ac63974 【修复】`u-parse` 在vue3真机白屏问题和h5样式污染问题 2023-05-23T16:14:38+08:00 VK 370725567@qq.com https://gitcode.net/vk-uni/vk-uview-ui/-/commit/a96aebf876a028e39381f8422e01e6c22bcd0f39 【修复】`u-select` 选择细节问题 2023-05-24T15:59:40+08:00 VK 370725567@qq.com https://gitcode.net/vk-uni/vk-uview-ui/-/commit/6811e94357b983ea36ac2a90aa7c946185ddf332 1 2023-05-24T15:59:53+08:00 VK 370725567@qq.com
<template>
<view class="wrap">
<u-parse :html="content" :tag-style="style"></u-parse>
<p>22</p>
</view>
</template>
<script>
export default {
data() {
return {
content: `
<p>露从今夜白,月是故乡明</p>
<img src="https://cdn.uviewui.com/uview/swiper/2.jpg" />
`,
style: {
// 字符串的形式
p: 'color: red;font-size:32rpx',
span: 'font-size: 30rpx'
}
};
},
methods: {
},
computed: {
}
};
</script>
<style lang="scss" scoped>
</style>
\ No newline at end of file
<template>
<view class="content">
<view class="">{{age}}</view>
<u-select
v-model="show"
:list="agesList"
@confirm="confirm"
:default-value="defaultValue"
mode="single-column"
>
</u-select>
<view style="font-size: 50rpx;font-weight: bold;" @click="clicks">点击选择</view>
<text space="ensp">{{ JSON.stringify(data,null,2) }}</text>
</view>
</template>
<script setup>
import {ref,reactive,onMounted} from 'vue'
const agesList = reactive([
{
label:'1月',
value:1,
lock:0,
extra:0
},
{
label:'2月',
value:2,
lock:1,
extra:1
},
{
label:'3月',
value:3,
lock:1,
extra:1
},
{
label:'4月',
value:4,
lock:1,
extra:1
},
{
label:'5月',
value:5,
lock:1,
extra:1
},
{
label:'6月',
value:6,
lock:1,
extra:1
},
{
label:'7月',
value:7,
lock:1,
extra:1
},
{
label:'8月',
value:8,
lock:1,
extra:1
},
{
label:'9月',
value:9,
lock:1,
extra:1
}
])
const show = ref(false)
const age = ref('一月')
var data = reactive({});
var defaultValue = reactive([]);
function confirm(e){
defaultValue = e.map((item, index) => {
return item.index;
});
data = e;
console.log('e: ', e)
//你看返回值 第一次选择没问题 第二次再点默认是上一次的选项 点确定extra就没有了
age.value = e[0].label
}
function clicks(){
show.value = true
}
</script>
<style>
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
</style>
......@@ -92,12 +92,12 @@
}
let global = {};
global.Parser = {};
import trees from './trees'
//import trees from './trees'
import cfg from '../libs/config.js'
const errorImg = cfg.errorImg;
export default {
components: {
trees
//trees
},
name: 'trees',
data() {
......
<template>
<view>
<view class="u-parse">
<slot v-if="!nodes.length" />
<!--#ifdef APP-PLUS-NVUE-->
<web-view id="_top" ref="web" :style="'margin-top:-2px;height:'+height+'px'" @onPostMessage="_message" />
......@@ -561,13 +561,14 @@
},
// #ifdef H5 || APP-PLUS-NVUE || MP-360
_handleHtml(html, append) {
const classPrefix = ".u-parse ";
if (!append) {
// 处理 tag-style 和 userAgentStyles
var style = '<style>@keyframes _show{0%{opacity:0}100%{opacity:1}}img{max-width:100%}';
var style = `<style>@keyframes _show{0%{opacity:0}100%{opacity:1}}${classPrefix}img{max-width:100%}`;
for (var item in cfg.userAgentStyles)
style += `${item}{${cfg.userAgentStyles[item]}}`;
style += `${classPrefix}${item}{${cfg.userAgentStyles[item]}}`;
for (item in this.tagStyle)
style += `${item}{${this.tagStyle[item]}}`;
style += `${classPrefix}${item}{${this.tagStyle[item]}}`;
style += '</style>';
html = style + html;
}
......@@ -654,7 +655,7 @@
}
</script>
<style>
<style lang="scss" scoped>
@keyframes _show {
0% {
opacity: 0;
......
......@@ -37,7 +37,7 @@
</view>
<view class="u-select__body">
<picker-view @change="columnChange" class="u-select__body__picker-view" :value="defaultSelector" @pickstart="pickstart" @pickend="pickend">
<picker-view-column v-for="(item, index) in columnData" :key="index">
<picker-view-column v-if="showColumnCom" v-for="(item, index) in columnData" :key="index">
<view class="u-select__body__picker-view__item" v-for="(item1, index1) in item" :key="index1">
<view class="u-line-1">{{ item1[labelName] }}</view>
</view>
......@@ -182,31 +182,46 @@ export default {
// 列数
columnNum: 0,
// 列是否还在滑动中,微信小程序如果在滑动中就点确定,结果可能不准确
moving: false
moving: false,
reset: false,
};
},
watch: {
// 在select弹起的时候,重新初始化所有数据
value: {
valueCom: {
immediate: true,
handler(val) {
if(val) setTimeout(() => this.init(), 10);
this.popupValue = val;
if (val) {
this.reset = true;
setTimeout(() => this.init(), 10);
}
this.popupValue = val;
}
},
modelValue: {
immediate: true,
handler(val) {
if(val) setTimeout(() => this.init(), 10);
this.popupValue = val;
}
},
}
},
computed: {
uZIndex() {
// 如果用户有传递z-index值,优先使用
return this.zIndex ? this.zIndex : this.$u.zIndex.popup;
},
valueCom() {
// #ifndef VUE3
return this.value;
// #endif
// #ifdef VUE3
return this.modelValue;
// #endif
},
// 用来兼容小程序、App、h5
showColumnCom(){
// #ifdef MP
return !this.reset;
// #endif
// #ifndef MP
return true;
// #endif
}
},
methods: {
// 标识滑动开始,只有微信小程序才有这样的事件
......@@ -222,6 +237,7 @@ export default {
// #endif
},
init() {
this.reset = false;
this.setColumnNum();
this.setDefaultSelector();
this.setColumnData();
......@@ -283,11 +299,12 @@ export default {
for(let i = 0; i < this.columnNum; i++) {
tmp = this.columnData[i][this.defaultSelector[i]];
let data = {
index: this.defaultSelector[i],
value: tmp ? tmp[this.valueName] : null,
label: tmp ? tmp[this.labelName] : null
};
// 判断是否存在额外的参数,如果存在,就返回
if(tmp && tmp.extra) data.extra = tmp.extra;
if(tmp && tmp.extra !== undefined) data.extra = tmp.extra;
this.selectValue.push(data)
}
},
......@@ -315,13 +332,13 @@ export default {
columnIndex.map((item, index) => {
let data = this.columnData[index][columnIndex[index]];
let tmp = {
index: columnIndex[index],
value: data ? data[this.valueName] : null,
label: data ? data[this.labelName] : null,
};
// 判断是否有需要额外携带的参数
if(data && data.extra !== undefined) tmp.extra = data.extra;
this.selectValue.push(tmp);
})
// 保存这一次的结果,用于下次列发生变化时作比较
this.lastSelectIndex = columnIndex;
......@@ -329,25 +346,29 @@ export default {
let data = this.columnData[0][columnIndex[0]];
// 初始默认选中值
let tmp = {
index: columnIndex[0],
value: data ? data[this.valueName] : null,
label: data ? data[this.labelName] : null,
};
// 判断是否有需要额外携带的参数
if(data && data.extra !== undefined) tmp.extra = data.extra;
this.selectValue.push(tmp);
this.lastSelectIndex = columnIndex;
} else if(this.mode == 'mutil-column') {
// 初始默认选中值
columnIndex.map((item, index) => {
let data = this.columnData[index][columnIndex[index]];
// 初始默认选中值
let tmp = {
index: columnIndex[index],
value: data ? data[this.valueName] : null,
label: data ? data[this.labelName] : null,
};
// 判断是否有需要额外携带的参数
if(data && data.extra !== undefined) tmp.extra = data.extra;
this.selectValue.push(tmp);
})
});
this.lastSelectIndex = columnIndex;
}
},
close() {
......