1

我正在使用 Scala / Lift 开发一个 Web 应用程序项目。我想让我的应用程序支持拖放以改善用户体验。

但我不太确定如何将 jQuery 部分与 Lift 连接起来。

目前我有一个工作的 UI 部分,一个 div 块有一个名为listRow的类,它具有一个 HTML5 属性data-stuffid,该属性具有来自数据库的 ID。

它可以拖到一个名为 的块中,我可以在 JavaScript 中正确nextAction打印出该字段。data-stuffid

这是我的 JavaScript 代码块:

<script type="text/javascript">
  $('.listRow').draggable({
      revert: true
  });

$("#nextAction").droppable({
    accept: ".listRow",
    tolerance: "pointer",
    activeClass: "dropActive",
    hoverClass: "dropHover",
    drop: function(event, ui) {
        var stuffID = ui.draggable.data("stuffid")
        console.log(stuffID)
    }
})

但我不知道如何调用 Lift AJAX 处理程序,并在案例中将 stuffID 传递给 Lift。

我想做的是有一个 Scala 函数,如下所示:

def showDialog(stuffID: String): JsCmds
{
    // Do some server side work, ex: querying database

    // Return a javascript cmds likes SHtml.ajaxButton...etc.
    Alert("SutffID:" + stuffID)
}

当用户将a拖到.listRow“#nextAction”时,showDialog将被调用,并将javascript返回给浏览器并让浏览器执行它。

4

2 回答 2

1

您可能正在寻找这两个功能之一。我会看看:

JsCmds.FunctionSHtml.ajaxCall

JsCmds.Function将允许您创建一个 JavaScript 函数,并SHtml.ajaxCall允许您通过 ajax 执行代码。您将在 Lift CSS Selector 中创建一个函数,然后您就可以直接从您的 jQuery 代码中调用该函数。

关于使用这两种方法的讨论很多,一些相关信息可能是:

于 2013-01-24T17:43:39.820 回答
0

从lift初始化jquery时,只需发送lift ajax回调作为参数

于 2013-01-24T04:54:06.770 回答