2016-08-29 14 views
1

一個JavaScript庫對象,如下列之一:Scala.js:物件常在他們的名字冒號鍵我使用預計

{ 
    "paren:action": ... 
} 

正如你所看到的,有在名稱冒號鍵/屬性,這就是我必須將名稱放在引號中的原因。 目前,我試圖做創建使用Scala.js一個相同的對象:

@JSExport 
def create() = { 
    literal(`paren:action` = ...) 
} 
我已經使用回

蜱因爲沒有他們,它甚至不進行編譯。但是,生成的對象的名稱不符合預期。

例(在Chrome控制檯執行):

var a = { "paren:action": ... }; 
"paren:action" in a; // => true 
Object.keys(a); // => ["paren:action"] 

var b = ScalaJsApp().create(); 
"paren:action" in b; // => false 
Object.keys(b); // => ["paren$colonaction"] 

我怎樣才能解決這個問題?

回答

2

最簡單的辦法來解決這個問題是使用js.Dictionary

def create() = { 
    js.Dictionary("paren:action" -> ...) 
} 

這當然也應與literal工作,但沒有,因爲討厭的編譯器的內部細節:paren$colonaction是怎樣的斯卡拉編譯器內部表示名稱paren:action,主要是由於JVM字節碼中允許的字符限制。

+0

謝謝,作品像一個魅力。很高興知道! – ceran