All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.liftmodules.extras.JsModule.scala Maven / Gradle / Ivy

The newest version!
package net.liftmodules.extras

import net.liftweb._
import common._
import http._
import http.js._
import JsCmds._
import JE._
import json._
import util.Helpers.tryo

/**
  * Common functionality for JavaScript modules.
  */
trait JsModuleLike {
  def name: String
  /**
    * JsCmd to init a module
    */
  def init(params: JsExp*): JsCmd =
    Call("%s.init".format(name), params:_*)

  /**
    * Call a function on the JavaScript module.
    */
  def call(func: String, params: JsExp*): Call =
    Call("%s.%s".format(name, func), params:_*)
}

/**
  * A JavaScript module
  */
case class JsModule(name: String) extends JsModuleLike

/**
  * A knockout.js JavaScript module
  */
case class KoModule(name: String, elementId: String) extends JsModuleLike {
  def applyBindings: Call =
    Call("ko.applyBindings", JsVar(name), Call("document.getElementById", elementId))

  override def init(params: JsExp*): JsCmd = {
    super.init(params:_*) & applyBindings
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy