2021-12-04

image.png
image.png
image.png

怎么说呢,写uni-app项目次数有点少,老实说文档也没咋好好看,这几天搞了个很蠢的问题,
没仔细看文档,看到了个 <a>要改成<navigator>

navigator 又只能跳转本地页面
就以为uniapp 中不能用<a>标签

正好项目里有个地方要跳转到外链官网之类的

又找到了uni-link 组件 ,就理所当然的使用了,也没有去尝试一下 <a>标签

过了几天突然想试一下,结果可以用,就裂开了,中间还给人家说uniapp用不了a标签,giao
h5是完全可以使用a标签的,但是非h5应该是不可以的

image.png

之前看的什么a要改成navigator,其实算是一种类似规范的东西,h5可以用,非h5不行,所以会推荐使用navigator 或uni-link
真的是麻了

害,还是不能偷懒,得多尝试,
还是自己这块的表达处理确实有些恶心,多语言,两种类型表单, 什么三种语言任意一种就能提交,部分字段(日期,数字)之类的共用,输入的保持各自的语言,一种语言填一半,另一种填好,各自乱七八糟的判断处理很多,给自己整的头晕,对这些小问题就没有尝试

项目又封装了几个组件,还有那种给其他人用的,又进一步理解了自定义组件的双向绑定。
下面是对element el-tag那个自定义标签的例子的一个封装
props中的value是其他地方引用时v-model传来的值
list是一个推荐标签的功能接收的数组
recommend 为显示推荐标签

也做了去重处理 数量限制

<template>
    <view>
        <view class="tags-list">
            <el-tag 
                :key="tag"
                v-for="(tag,index) in value"
                closable
                :disable-transitions="false"
                @close="tagClose(index)"
            >
                {{tag}}
            </el-tag>
            <el-input 
                class="input-new-tag"
                v-if="addTagVisible"
                v-model="addTagValue"
                ref="TagInput"
                size="small"
                @keyup.enter.native="handleInputConfirm"
                @blur="handleInputConfirm"
            />
            <el-button
                v-else
                class="button-new-tag"
                size="small"
                @click="showInput"
            >
                + {{lang[langMark].lang.zdybq}}
            </el-button>
        </view>
        <view class="recommend-tags" v-if="recommend">
            <view class="recommend-head">
                <text class="title">{{lang[langMark].lang.tjbq}}:</text>
                <el-button type="text" size="medium" @click="changeRecomend">{{lang[langMark].lang.hyp}}</el-button>
            </view>
            <view class="recommend-content">
                <el-tag
                    class="recomend-item"
                    disable-transitions
                    type="info"
                    :key="tag"
                    v-for="tag in recomendList"
                    @click="addTag(tag)"
                >
                    {{tag}}
                </el-tag>
            </view>
        </view>
    </view>
</template>

<script>
    import lang from '@/utils/lang/index.js'
    export default {
        name: "TagSelect",
        data() {
            return {
                lang: lang,
                recomendList: [],
                addTagValue: '',
                addTagVisible: false
            }
        },
        props: {
            value: {
                type: Array,
                default: () => {
                    return []
                }
            },
            list: {
                type: Array,
                default: () => {
                    return []
                }
            },
            recommend: {
                type: Boolean,
                default: false
            },
            max: {
                type: Number,
                default: 10
            },
            langMark: {
                type: String,
                default: 'zh-TW'
            },
            text: {
                type: String,
                default: '超出数量限制'
            }
        },
        created() {
            this.changeRecomend();
        },
        watch: {
            list() {
                this.changeRecomend();
            }
        },
        methods: {
            update(val) {
                this.$emit('input', val)
            },
            // 推荐标签换一批
            changeRecomend() {
                if(!this.list) {
                    return [];
                }
                this.recomendList = [];
                if(this.list.length<9) {
                    this.recomendList = [...this.list];
                    return;
                }
                let set = new Set();
                while(set.size < 9) {
                    var index = Math.floor(Math.random()*this.list.length)
                    set.add(this.list[index]);
                }
                this.recomendList = [...set];
            },
            // 自定义标签
            handleInputConfirm() {
                if(this.value.indexOf(this.addTagValue) >= 0) {
                    this.$message({
                        message: this.lang[this.langMark].lang.yczxt,
                        type: 'warning'
                    });
                    this.addTagVisible = false;
                    this.addTagValue = '';
                    return;
                }
                let addTagValue = this.addTagValue;
                if (addTagValue) {
                    this.update([...this.value,addTagValue]);
                }
                this.addTagVisible = false;
                this.addTagValue = '';
            },
            // 显示输入框
            showInput() {
                if(this.value.length >= this.max) {
                    this.$message({
                        message: this.text,
                        type: 'warning'
                    });
                    return;
                }
                this.addTagVisible = true;
                this.$nextTick(_ => {
                    this.$refs.TagInput.$refs.input.focus();
                });
            },
            // 关闭标签
            tagClose(index) {
                this.value.splice(index, 1);
                this.update([...this.value]);
            },
            // 添加推荐标签
            addTag(tag) {
                if(this.value.length >= this.max) {
                    this.$message({
                        message: this.text,
                        type: 'warning'
                    });
                    return;
                }
                if(this.value.indexOf(tag) >= 0) {
                    this.$message({
                        message: this.lang[this.langMark].lang.yczxt,
                        type: 'warning'
                    });
                    return;
                }
                this.update([...this.value,tag]);
            },
        }
    }
</script>


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容