如何将 Javascript 中的 JQuery 函数值转换为 ScalaJS (scalajs-jquery)
How to translate a JQuery function value in Javascript to ScalaJS (scalajs-jquery)
在我的 ScalaJS 项目中我使用 Semantic-UI with scala-js-jquery
我用这个来打补丁 JQuery:
// Monkey patching JQuery
@js.native
trait SemanticJQuery extends JQuery {
def dropdown(params: js.Any*): SemanticJQuery = js.native
def popup(params: js.Any*): SemanticJQuery = js.native
// and more
}
// Monkey patching JQuery with implicit conversion
implicit def jq2semantic(jq: JQuery): SemanticJQuery = jq.asInstanceOf[SemanticJQuery]
例如$('select.dropdown').dropdown();
转换为 jQuery(".ui.dropdown").dropdown(js.Dynamic.literal(on = "hover"))
。
我现在的问题是如何翻译这个:
// custom form validation rule
$.fn.form.settings.rules.adminLevel = function(value, adminLevel) {
return (window.user.adminLevel >= adminLevel)
};
您的 JS 代码段
// custom form validation rule
$.fn.form.settings.rules.adminLevel = function(value, adminLevel) {
return (window.user.adminLevel >= adminLevel)
};
直接翻译为
import scala.scalajs.js
import scala.scalajs.js.Dynamic.{global => g}
// custom form validation rule
g.$.fn.form.settings.rules.adminLevel = { (value: js.Dynamic, adminLevel: js.Dynamic) =>
g.window.user.adminLevel <= adminLevel
}
如果你有一些静态类型来表示这些结构,你可以用静态类型做一些更好的事情,但如果你对动态类型的解决方案感到满意,基本上就是这样。
在我的 ScalaJS 项目中我使用 Semantic-UI with scala-js-jquery
我用这个来打补丁 JQuery:
// Monkey patching JQuery
@js.native
trait SemanticJQuery extends JQuery {
def dropdown(params: js.Any*): SemanticJQuery = js.native
def popup(params: js.Any*): SemanticJQuery = js.native
// and more
}
// Monkey patching JQuery with implicit conversion
implicit def jq2semantic(jq: JQuery): SemanticJQuery = jq.asInstanceOf[SemanticJQuery]
例如$('select.dropdown').dropdown();
转换为 jQuery(".ui.dropdown").dropdown(js.Dynamic.literal(on = "hover"))
。
我现在的问题是如何翻译这个:
// custom form validation rule
$.fn.form.settings.rules.adminLevel = function(value, adminLevel) {
return (window.user.adminLevel >= adminLevel)
};
您的 JS 代码段
// custom form validation rule
$.fn.form.settings.rules.adminLevel = function(value, adminLevel) {
return (window.user.adminLevel >= adminLevel)
};
直接翻译为
import scala.scalajs.js
import scala.scalajs.js.Dynamic.{global => g}
// custom form validation rule
g.$.fn.form.settings.rules.adminLevel = { (value: js.Dynamic, adminLevel: js.Dynamic) =>
g.window.user.adminLevel <= adminLevel
}
如果你有一些静态类型来表示这些结构,你可以用静态类型做一些更好的事情,但如果你对动态类型的解决方案感到满意,基本上就是这样。