由Vue实现限制文本框输入长度引发的思考

栏目: 编程语言 · 发布时间: 1年前

来源: blog.codingplayboy.com

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

最近,公司产品线改成使用Vue主线开发,前几天有一个需求:一个标题输入文本框,需要限制其长度。google,百度搜索答案都不满意,现总结并扩展一下,希望能给Vue使用者带来一些帮助。

过滤器

针对这类限制输入的需求,很容易想到的是使用Vue过滤器,如:

    Vue.filter('sliceString', function(str, start, length) {
        return str.slice(start, length);
    });

    // 组件模板中使用如下:
    <template>
        <input type="text" v-model="title | sliceString 0 10">
    </template>

但是需要注意的是Vue 2.x版本已经移除了内置过滤器,不支持组件内过滤器,只能全局注册,至于为什么要这样做,我并不清楚。

watch监听

除了过滤器,还有一种简便的方式,即使用 Vue 组件的 watch 属性,监听属性或表达式,比如,我们需要控制标题字数在12字以内,在某组件内定义如下代码:

    data() {
        return {
            title: '',
            titleMaxLength: 12
        };
    },

    watch: {
        title() {
            if (this.title.length > this.titleMaxLength) {
                this.title = String(this.title).slice(0, this.titleMaxLength);
            }
        }
    }

在模板中使用方式如下:

    <input type="text" v-model="title">

这种方式比较直接,而且不需要考虑 Vue 版本,但是复用性差;如果在多组件内有共同需求,可以使用全局过滤器或者mixins方式定义。

自定义指令

要说可拓展性最强的方式,当然还是自定义指令,自定义指令提供诸多组件元素生命周期函数:

    // 注册
    Vue.directive('my-directive', {
        bind: function () {},
        inserted: function () {},
        update: function () {},
        componentUpdated: function () {},
        unbind: function () {}
    });
    // 注册(传入一个简单的指令函数)
    Vue.directive('my-directive', function () {
        // 这里将会被 `bind` 和 `update` 调用
    });

如果使用指令实现上述例子,可以使用全局注册,也可以局部组件内定义指令,这里以组件内定义为例,代码如下:

    directives: {
        sliceString: {
            update(el, binding) {
                if (el.value.length > binding.value) {
                    el.value = el.value.slice(0, binding.value);
                }
            }
        }
    }

在模板中使用方式如下:

    <input type="text" v-sliceString="titleMaxLength" v-model="title">

除了例子中可以限制输入长度,还可以实现很多需求,如过滤屏蔽某些输入,对某些输入数据做验证等等,而且实现方式也多种多样,各有千秋,可以根据需求衡量,选择。


以上所述就是小编给大家介绍的《由Vue实现限制文本框输入长度引发的思考》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

为你推荐:

相关软件推荐:

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

思考的技术

思考的技术

[日]大前研一 / 刘锦秀、谢育容 / 中信出版社 / 2010-11 / 32.00元

思路决定出路,没有了思路,也就没有了出路。 在充满危机与冒险的当下,我们缺乏的不是技巧而是揭发事务本质的动力和好奇心,缺少怀疑一切的心态和对固有模式的怠惰。 大前研一凭借他30多年的管理咨询经验,为我们提供了一种全新的可借鉴的思考方式。 企业和个人惟有改变既有的思考模式,放弃对过去成功经验的迷恋,学习有创意的思考方法,方能找到正确的经营思路。一起来看看 《思考的技术》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具