Как использовать конфигурацию модуля AngularJS с помощью 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, который делает что-то вроде:

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

где com.example.myapp.MymoduleConfigurator записано в Scala.

Это единственный способ или есть лучший подход?

Ответ 1

Для тех, кто ищет ответы на этот вопрос. Это было разрешено OP над GitHub, когда обходной путь заключается в добавлении следующего импорта:

import scalajs.js

Кроме того, чтобы помочь в отладке ваших проблем, вы можете добавить флаги в свой build.sbt файл, чтобы создать журнал сгенерированного кода для stdout во время компиляции:

// print code for angulate 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 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"