Scalajs + Angularjs 如何使用外部 javascript 插件

Scalajs + Angularjs how to use external javascript plugin

我正在尝试在我的 ScalaJs Angular 指令中使用外部 JavaScript 插件。 我不知道这样做的最佳方法,所以目前我将此功能添加到 window

javascript 插件如下所示:

(function(){
   "use strict";
   SmartCrop.crop = function() {
     //some function
   }
   SmartCrop.options = {
     //options
   }
   //...

   window.SmartCrop = SmartCrop  // I added this line
})()

但我不知道如何在我的 scalaJs 代码中访问 window.SmartCrop。

我在我的指令中尝试这样做,但没有成功(请查看我在以下代码中写的注释):

@JSExport
@injectable("smartCrop")
class SmartCropDirective(window: Window) extends ElementDirective with TemplatedDirective {

  override val  templateUrl = "assets/templates/smartcrop/smartcrop.html"

  override def link(scope: ScopeType, elements: Seq[Element], attrs: Attributes): Unit = {
      // I can found window.SmartCrop in my console if I log window
      console.log(window)
      // this line is not working but I'm looking for something similar:
      window.SmartCrop.crop()
  }
}

所以,我正在寻找使用这个插件的好方法。

像这样:

@js.native
object SmartCrop extends js.Object {
  def crop(): Unit
}

...
SmartCrop.crop()

有关详细信息,请参阅 Write JavaScript facades guide