В 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 _ )