如何在 Scala.js 中使用 AngularJS 的模块配置?
How to use AngularJS's module config with Scala.js?
简单来说JavaScript你可以这样做:
angular.module('mymodule', ['ionic'])
.config(function($someParam1, $someParam2) {
// do something with the parameters
}
我正在尝试使用 Scala.js 来完成此操作。我尝试了以下三种尝试,均失败:
尝试 1: 使用 scalajs-angular
Angular.module("mymodule", Seq("ionic")).config(MyConf)
问题:MyConf
必须扩展 Config
并且我没有找到任何可以传递参数的位置。
尝试 2: 使用 scalajs-angulate
Angular.module("mymodule", Seq("ionic")).config((a: Any, b: Any) => {...})
这个应该工作,但是我得到一个编译器错误:not found: value js
尝试3:使用动态类型API
global.angular.module("mymodule", Seq("ionic")).config((a: Any, b: Any) => {...})
编译,但未调用 {} 中的内容。
我现在能想到的唯一方法是写一个基于 javascript 的 "Bridge",它可以做类似的事情:
angular.module('mymodule', ['ionic']).config(function($a, $b) {
com.example.myapp.MymoduleConfigurator.config($a, $b);
}
其中 com.example.myapp.MymoduleConfigurator
是用 Scala 编写的。
这是唯一的方法还是有更好的方法?
对于那些正在寻找此问题答案的人。 OP 在 GitHub 上解决了这个问题,解决方法是添加以下导入:
import scalajs.js
此外,为了帮助调试您的问题,您可以 add flags 您的 build.sbt
文件在编译时将生成的代码生成到标准输出的日志,如下所示:
// print code for angulate's Module enhancements
scalacOptions += "-Xmacro-settings:biz.enef.angulate.ModuleMacros.debug"
// print code generated for calls to module.controllerOf[]
scalacOptions += "-Xmacro-settings:biz.enef.angulate.ControllerMacros.debug"
// print code generated for calls to module.directiveOf[]
scalacOptions += "-Xmacro-settings:biz.enef.angulate.DirectiveMacros.debug"
// print code generated for calls to module.serviceOf[]
scalacOptions += "-Xmacro-settings:biz.enef.angulate.ServiceMacros.debug"
// print code generated for calls to module.componentOf[]
scalacOptions += "-Xmacro-settings:biz.enef.angulate.ComponentMacros.debug"
// print code generated for function DI
scalacOptions += "-Xmacro-settings:biz.enef.angulate.AnnotationMacros.debug"
// print code generated by angulate's HttpPromise extensions
scalacOptions += "-Xmacro-settings:biz.enef.angulate.HttpPromiseMacros.debug"
// enable logging of all registered services, controllers, and directives at run time
scalacOptions += "-Xmacro-settings:biz.enef.angulate.runtimeLogging"
简单来说JavaScript你可以这样做:
angular.module('mymodule', ['ionic'])
.config(function($someParam1, $someParam2) {
// do something with the parameters
}
我正在尝试使用 Scala.js 来完成此操作。我尝试了以下三种尝试,均失败:
尝试 1: 使用 scalajs-angular
Angular.module("mymodule", Seq("ionic")).config(MyConf)
问题:MyConf
必须扩展 Config
并且我没有找到任何可以传递参数的位置。
尝试 2: 使用 scalajs-angulate
Angular.module("mymodule", Seq("ionic")).config((a: Any, b: Any) => {...})
这个应该工作,但是我得到一个编译器错误:not found: value js
尝试3:使用动态类型API
global.angular.module("mymodule", Seq("ionic")).config((a: Any, b: Any) => {...})
编译,但未调用 {} 中的内容。
我现在能想到的唯一方法是写一个基于 javascript 的 "Bridge",它可以做类似的事情:
angular.module('mymodule', ['ionic']).config(function($a, $b) {
com.example.myapp.MymoduleConfigurator.config($a, $b);
}
其中 com.example.myapp.MymoduleConfigurator
是用 Scala 编写的。
这是唯一的方法还是有更好的方法?
对于那些正在寻找此问题答案的人。 OP 在 GitHub 上解决了这个问题,解决方法是添加以下导入:
import scalajs.js
此外,为了帮助调试您的问题,您可以 add flags 您的 build.sbt
文件在编译时将生成的代码生成到标准输出的日志,如下所示:
// print code for angulate's Module enhancements
scalacOptions += "-Xmacro-settings:biz.enef.angulate.ModuleMacros.debug"
// print code generated for calls to module.controllerOf[]
scalacOptions += "-Xmacro-settings:biz.enef.angulate.ControllerMacros.debug"
// print code generated for calls to module.directiveOf[]
scalacOptions += "-Xmacro-settings:biz.enef.angulate.DirectiveMacros.debug"
// print code generated for calls to module.serviceOf[]
scalacOptions += "-Xmacro-settings:biz.enef.angulate.ServiceMacros.debug"
// print code generated for calls to module.componentOf[]
scalacOptions += "-Xmacro-settings:biz.enef.angulate.ComponentMacros.debug"
// print code generated for function DI
scalacOptions += "-Xmacro-settings:biz.enef.angulate.AnnotationMacros.debug"
// print code generated by angulate's HttpPromise extensions
scalacOptions += "-Xmacro-settings:biz.enef.angulate.HttpPromiseMacros.debug"
// enable logging of all registered services, controllers, and directives at run time
scalacOptions += "-Xmacro-settings:biz.enef.angulate.runtimeLogging"