zoukankan      html  css  js  c++  java
  • Xitrum学习笔记08

    JavaScript

    Xitrum包含jQuery,有一些 jsXXX辅助方法

    1. 添加JavaScript代码片段到View中

    在action中,调用jsAddToView添加JS代码(可以多次调用)

    class MyAction extends AppAction {
      def execute() {
        ...
        jsAddToView("alert('Hello')")
        ...
        jsAddToView("alert('Hello again')")
        ...
        respondInlineView(<p>My view</p>)
      }
    }

    在xitrum-demo中,调用 jsAddToView的是 jade文件,通过试验也可以在execute方法中使用jsAddToView方法,但是AppAction中要使用jquery js

    在 layout 中,调用jsForView:

    import xitrum.Action
    import xitrum.view.DocType
    trait AppAction extends Action {
      override def layout = DocType.html5(
        <html>
        <head>
          {antiCsrfMeta}
          {xitrumCss}
          {jsDefaults}
        </head>
        <body>
          <div id="flash">{jsFlash}</div>  //在xitrum3.28中已经没有jsFlash这个对象了
          {renderedView}
          {jsForView}
        </body>
      </html>
    )

    2. 没有View的情况下,直接响应返回JavaScript

    由JavaScript发出响应,使用jsRespond

    jsRespond("$('#error').html(%s)".format(jsEscape(<p class="error">Could not login.</p>)))

    重定向

    jsRedirectTo("http://cntt.tv/")
    jsRedirectTo[LoginAction]()

    jsRespond和jsRedirect不能在一个Action的execute方法中多次使用,只会返回第一个被执行的方法的结果,返回的内容是javascript代码

    JSON

    Xitrum包含JSON4S(一个JSON抽象语法分析树)。Scala 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) // An example
    respondJson(scalaData)

    在混入了Action特质的execute方法中,调用respondJSON方法,会返回json格式的数据

    Knockout.js插件 

    在 build.sbt文件中配置  libraryDependencies += "tv.cntt" %% "xitrum-ko" % "1.7",就可以在项目中使用Knockout JS了

    参考 https://github.com/xitrum-framework/xitrum-ko

  • 相关阅读:
    poj 1191(棋盘分割)
    poj 1184(聪明的打字员)
    HDU 3593(The most powerful force)
    poj 2449(Remmarguts' Date)
    poj 1837(blance)
    poj 1742(Coins)
    poj 3280(Cheapest Palindrome)
    poj 1077(八数码)
    数组排序1.和求最大值
    当textindent与float相遇
  • 原文地址:https://www.cnblogs.com/sunspeedzy/p/6844384.html
Copyright © 2011-2022 走看看