提升 - 如何使用WiringUI获取select的默认值

时间:2013-11-22 22:19:17

标签: lift

我在获取选择下拉列表的默认值时遇到问题。 我有水果val:

 val fruits = List("apple", "banana", "other")

我用:

渲染一个tr
<tr id={ theLine.guid }>
      <td>
        {
          SHtml.ajaxSelect(fruits, Full(fruits(0)),
            s => {
              mutateLine(theLine.guid) {
                l => Line(l.guid, l.name, s, l.note)
              }
              Noop
            })
        }
      </td>
(...)
页面html上的

正确呈现选项选择=“已选择”,但是当我尝试将其保存到数据库时,我得到空的水果值。如果我将选项更改为“其他”,然后我将其选择回“苹果”,它会保存正确的值。 我还为addLine添加了一个println函数,以查看此向量中的值是什么,如果我不更改水果选项,则存在空值,所以我认为当我处理行将其保存到DB时,它不是问题。

你可以帮我解决这个问题吗?

感谢 杰拉德

1 个答案:

答案 0 :(得分:1)

在更改选择选项之前,您不会触发调用您的功能的事件。该函数绑定到onChange,并且仅在值更改时才会被触发。

要修复,您可以:开始使用“选择值”之类的选项。这将要求用户更改项目,但这是触发onchange的唯一方法。

如果您不想这样做,可以添加一个按钮并将您的逻辑添加到按钮单击处理程序,该处理程序将在提交时被调用。这样的事情应该有所帮助 - 你需要将它绑定到你的输出,或者你提供的内联,或者通过CSS Selectors

var selected = Full(fruits(0))
SHtml.ajaxSelect(fruits, selected,
        s => {
          selected = Full(s)
          Noop
        })

SHtml.ajaxSubmit("Submit", () => {
  mutateLine(theLine.guid) {
    l => Line(l.guid, l.name, selected, l.note)
  }
})