В Lift создание JObject со встроенной функцией

В JavaScript, особенно в jQuery, обычно используется вызов функции с литеральным аргументом, а поле этого аргумента является встроенной анонимной функцией. Так:

$(function () {
    $("#mylist").sortable({
        placeholder: "ui-state-highlight",
        stop: function () { alert('Hello!'); }
    });
});

Можно ли сделать такой звонок из Лифта? Это насколько я понял:

"#jsonScript" #> Script(js.jquery.JqJsCmds.JqOnLoad(
    js.jquery.JqJE.Jq("#mylist") ~> js.JE.JsFunc("sortable", JObject(
        JField("placeholder", JString("ui-state-highlight")) ::
        JField("stop", js.JE.AnonFunc(js.JsCmds.Alert("Hello!"))) ::
        Nil
    ))
))

Компилятор жалуется, что AnonFunc не является JValue, что абсолютно верно: это не так. Но в JavaScript вызов function () {} является допустимым значением для буквального поля объекта. Как мне сообщить об этом Лифту?

Долгосрочная цель здесь состоит в том, чтобы тело функции в конечном итоге было:

SHtml.jsonCall( JE.Call("jsFunction"), liftFunction _ )

person eje211    schedule 17.02.2014    source источник


Ответы (2)


Вот ответ, который я дал некоторое время тому, кто хотел интегрировать Lift с автозаполнением jquery, в котором используется аналогичный метод обратного вызова: Lift — автозаполнение с отправкой Ajax

person Dave Whittaker    schedule 18.02.2014

Мне нужно было использовать JsObj:

def render = 
    "#jsonScript *" #> js.jquery.JqJsCmds.JqOnLoad(
        js.jquery.JqJE.Jq("#mylist") ~> js.JE.JsFunc("sortable", js.JE.JsObj(
            ("placeholder", "ui-state-highlight"),
            ("stop", js.JE.AnonFunc(SHtml.jsonCall( JE.Call("jsFunction"), liftFunction _)))
        ))
    ).cmd
person eje211    schedule 19.02.2014