【问题标题】:ExtJs: TextArea how to return value as an array instead of as a string?ExtJs:TextArea 如何以数组而不是字符串的形式返回值?
【发布时间】:2017-04-28 09:01:47
【问题描述】:

在 ExtJs 6.2 上,我有一个带有 TextArea 的表单。 当用户输入多行文本时,例如:

line 1
line 2

绑定的值当前是一个字符串:

value= "line 1↵line 2"

但是当商店提交时,我需要将值(到服务器)作为数组发送。

如何告诉 textarea 将输入文本作为数组返回?

value : ["line1", "line2"]

不必在服务器端将字符串拆分为数组。

编辑:我不想仅仅分割价值。因为我会更新 textarea 的默认行为以避免每次使用它时都必须应用拆分(在 ViewController 中)。

【问题讨论】:

    标签: extjs extjs6 extjs6.2


    【解决方案1】:

    我已经创建了一个关于如何处理它的小提琴(假设我正确理解了您的要求!)

    https://fiddle.sencha.com/#view/editor&fiddle/1uq7

    这个例子在进入textarea时将一个数组变成一个字符串,并在输出时将其拆分。

    Ext.define('ArrayTextArea', {
        extend: 'Ext.form.field.TextArea',
    
        alias: 'widget.arraytextarea',
    
        setValue: function(val){
            // if it's an array then join with a newline
            if(Ext.isArray(val)){
                val = val.join('\n');
            }
    
            return this.callParent([val]);
        },
        getValue: function(){
            var val = this.callParent(arguments);
    
            // split the value by newline char
            return val.split('\n');
        }
    
    });

    【讨论】:

    • 这正是我想要的。谢谢你。
    【解决方案2】:

    document.getElementById('textarea').value.split('↵')

    【讨论】:

    • 如果可以使用Extjs的方法,为什么要使用document.getElementById
    • 我会将内部值存储为数组,但不会影响显示值。我试图覆盖 setValue 和 setRawValue 值的默认行为,但是当我将值拆分为数组时,显示值会像这样自动覆盖 line1, line2, line3
    • @tejas - 这只是一个例子。你可以使用任何你想要的方法。
    • @vianney - 只需将其值存储在某个变量中,然后对其进行操作。另外,你可以在小提琴中做例子,如果我们能重现你的问题,帮助你会容易得多。
    【解决方案3】:

    【讨论】:

    • 我搜索而不是更改 textarea 的默认行为,以确保在我的应用程序的所有屏幕中,textarea 上的绑定值是数组而不是字符串。
    猜你喜欢
    • 2016-10-19
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    • 2011-09-20
    • 2021-07-31
    • 2019-02-04
    • 1970-01-01
    • 2013-05-16
    相关资源
    最近更新 更多