2016-04-22 62 views
2

當使用ScalaJS,我可以導出某個對象及其所有成員像這樣在ScalaJS中導出伴隨對象方法?

@JSExport object Thing { 
    @JSExport def doThing(x:Int) = x * 2 
} 

但是創建一個同伴對象時,ScalaJS不再出現導出的方法。

@JSExport @JSExportAll case class Thing(x:Int) 

@JSExport object Thing { 
    @JSExport def fromNumber(x:Int) = Thing(x) 
} 

在這個例子中我現在有Javascript類我可以通過調用Thing(n)實例,但似乎沒有要任何方法Thing.fromNumber可用。

這可能與ScalaJS?

(注:目前使用帶有 「斯卡拉2.11.8」 和「SBT 0.13.9 「ScalaJS 0.6.8」)

回答

0

這樣稱呼它:

Thing().fromNumber(...) 

(注意額外的括號背後的「東西」)

+0

不幸的是'Thing()'指的是case類的構造函數。 –

0

你得給同伴對象的另一個名字,當你導出:

@JSExport @JSExportAll case class Thing(x:Int) 

@JSExport("ThingOps") 
object Thing { 
    @JSExport def fromNumber(x:Int) = Thing(x) 
} 

現在致電ThingOps().fromNumber(1)

你要求的是靜態方法。 Scala.js目前不支持這些(請參見#1902)。

相關問題