使用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可以实现吗?
(注:目前使用“ScalaJS 0.6.8”和“Scala 2.11.8”和“SBT 0.13.9”
答案 0 :(得分:0)
这样称呼:
import React from 'react';
import {render} from 'react-dom';
import { Provider } from 'react-redux';
import { Router, browserHistory } from 'react-router';
import routes from './routes';
import configureStore from './store/configureStore';
require('./favicon.ico'); // Tell webpack to load favicon.ico
import './styles/styles.scss'; // Yep, that's right. You can import SASS/CSS files too! Webpack will run the associated loader and plug this into the page.
const store = configureStore();
render(
<Provider store={store}>
<Router history={browserHistory} routes={routes} />
</Provider>, document.getElementById('app')
);
(注意&#39; Thing&#39;)背后的额外括号
答案 1 :(得分: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)。