You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rebol开发:如何正确将文本字段内容追加到text-list列表

Rebol text-list追加条目全被覆盖问题修复

问题根因

Rebol中field控件的/text属性返回的不是输入内容的独立字符串副本,而是控件内部实时存储输入内容的字符串原生引用。每次直接把这个引用追加到txtList/data数据源时,列表存储的所有条目本质都指向内存里的同一个字符串对象。当输入框内容更新时,所有指向该字符串的列表条目会同步显示最新输入值,就会出现旧条目全部被替换、所有条目内容完全一致的现象。

修复方案

获取输入框内容时,用copy函数生成输入内容的独立副本,再追加到列表数据源即可,仅需修改populate函数内的取值逻辑:

populate: does[
    country: copy countryField/text  ; 加copy生成独立字符串,避免共享引用
    append txtList/data country
    show lay
]

修正后完整可运行代码

REBOL [
    Title: "test4"
    Version: 1.3.3
    Author: "me"
    Purpose: {create a list of countries}
]

populate: does[
    country: copy countryField/text
    append txtList/data country
    show lay
]

lay: layout [
    across
    text "Enter name of country" black bold
    countryField: field
    return
    across
    txtList: text-list 
    panel [
        button "Add" [populate]
        button "Delete" [remove back tail txtList/data show lay]
        button "Clear" [clear txtList/data show lay]
    ]
]

view lay

可选优化:追加条目后如果需要自动清空输入框,可以在append逻辑后新增两行代码:clear countryField/text、show countryField,交互体验更顺畅。

内容的提问来源于stack exchange,提问作者marco_rexo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 22:36:20