JavaScript и JSON
===================
JavaScript
----------
Xitrum включает jQuery (опционально) с дополнительным набором утильных функций jsXXX.
Вставка JavaScript фрагментов в представление
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
В контроллере вы можете использовать метод ``jsAddToView`` (множество раз, если необходимо):
::
class MyAction extends AppAction {
def execute() {
...
jsAddToView("alert('Hello')")
...
jsAddToView("alert('Hello again')")
...
respondInlineView(
My view
)
}
}
В шаблоне метод ``jsForView``:
::
import xitrum.Action
import xitrum.view.DocType
trait AppAction extends Action {
override def layout = DocType.html5(
{antiCsrfMeta}
{xitrumCss}
{jsDefaults}
{jsFlash}
{renderedView}
{jsForView}
)
Отправка JavaScript непосредственно (без представления)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Для отправки JavaScript:
::
jsRespond("$('#error').html(%s)".format(jsEscape(Could not login.
)))
Для редиректа:
::
jsRedirectTo("http://cntt.tv/")
jsRedirectTo[LoginAction]()
JSON
----
Xitrum включает `JSON4S `_.
Пожалуйста прочтите документацию проекта о том как считывать и генерировать JSON.
Конвертация case объекта в строку JSON:
::
import xitrum.util.SeriDeseri
case class Person(name: String, age: Int, phone: Option[String])
val person1 = Person("Jack", 20, None)
val json = SeriDeseri.toJson(person1)
val person2 = SeriDeseri.fromJson[Person](json)
Отправка JSON клиенту:
::
val scalaData = List(1, 2, 3) // Например
respondJson(scalaData)
JSON так же полезен для написания конфигурационных файлов со вложенными структурами.
Смотри :doc:`Загрузка конфигурационных файлов `.
Плагин для Knockout.js
----------------------
Смотри https://github.com/xitrum-framework/xitrum-ko