如何在Scala.js中使用AngularJS的模块配置?

rab*_*ens 10 javascript scala angularjs scala.js ionic

在纯JavaScript中,您可以:

angular.module('mymodule', ['ionic'])
  .config(function($someParam1, $someParam2) {
    // do something with the parameters
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用Scala.js.我尝试了以下三次尝试,所有这些都失败了:

尝试1:使用scalajs-angular

Angular.module("mymodule", Seq("ionic")).config(MyConf)
Run Code Online (Sandbox Code Playgroud)

问题:MyConf必须扩展Config,我没有找到任何可以传递参数的位置.

尝试2:使用scalajs-angulate

Angular.module("mymodule", Seq("ionic")).config((a: Any, b: Any) => {...})
Run Code Online (Sandbox Code Playgroud)

应该工作,但我得到一个编译器错误:not found: value js

尝试3:使用动态类型的API

global.angular.module("mymodule", Seq("ionic")).config((a: Any, b: Any) => {...})
Run Code Online (Sandbox Code Playgroud)

编译,但{}内的内容不会被调用.

我现在能想到的唯一方法是编写一个基于javascript的"Bridge",它可以执行以下操作:

angular.module('mymodule', ['ionic']).config(function($a, $b) {
    com.example.myapp.MymoduleConfigurator.config($a, $b);
}
Run Code Online (Sandbox Code Playgroud)

这里com.example.myapp.MymoduleConfigurator是用Scala编写.

这是唯一的方法还是有更好的方法?

Mad*_*ess 0

对于那些寻找这个问题答案的人。OP 在GitHub上解决了这个问题,解决方法是添加以下导入:

import scalajs.js
Run Code Online (Sandbox Code Playgroud)

此外,为了帮助调试问题,您可以向文件添加标志build.sbt,以在编译时将生成的代码的日志生成到 stdout,如下所示:

// 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"
Run Code Online (Sandbox Code Playgroud)