【问题标题】:knockoutjs bind multiple input elements to one observableknockoutjs 将多个输入元素绑定到一个 observable
【发布时间】:2012-06-22 17:45:05
【问题描述】:

我想将两个或多个输入元素绑定到 viewModel 的一个可观察属性。

例如,我可能有一个名为 Telephone number 的属性,它由区号和号码组成。我想为用户输入显示两个文本框,它会更新视图模型中的单个可观察对象(它可以存储为逗号分隔的字符串或数组)。我不想拥有多个属性,然后拥有电话号码的计算属性,因为我不知道将向用户显示多少个文本框以供输入(使用模板动态生成)。

有可能实现吗?谢谢!

编辑:这是更好理解http://jsfiddle.net/amitava82/wMH8J/2/的小提琴

【问题讨论】:

    标签: javascript knockout.js


    【解决方案1】:

    如果您的数据被合并到一个 observable 中,您需要一些东西来解析或拆分它们。一种方法是使用计算。如果您想要 3 个(仅选择一个数字)文本框作为电话号码,并且它们都指向 1 个可观察的电话号码,您可以为部件创建读/写计算属性并将它们绑定到输入文本框。例如,区号文本框将绑定到计算的被叫区号,该区号读取电话号码的前 3 个字符。它的可写方面只是将这 3 个写回可观察的电话号码。

    【讨论】:

    • 是的,我从 KO 文档中知道这种技术。但问题是我不知道事先需要多少个文本框(或其他输入类型)(到目前为止最多三个)。这个想法是,我将有一个包含运算符(IS、IN BETWEEN、ONE OF 等)的下拉列表。在选择时,IS 会给我一个文本框/选择,其中 IN BETWEEN 呈现两个文本框,而 ONE OF 给用户一个多选列表以供选择(等等)。我想将这些输入中的任何一个捕获到一个 Observable 中。我希望我能理解这个想法。
    • 也许可以创建一个小提琴来帮助演示您正在尝试做的事情。
    • 如果你不想使用你的视图模型来管理这个,下一个地方是自定义绑定。如果您提供一个清晰完整的示例说明您想要做什么,我可以更具体地回答。
    • 我已经添加了原始帖子的小提琴。我是 KO 新手,我的方法可能并不理想。请指教。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 2013-09-27
    • 2013-10-16
    • 2019-06-30
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多