如何通过 Web assembly 访问 Go 中的 JS 对象
How to access JS Objects in Go through Web assembly
我正在使用浏览器将 wasm 文件构建到 运行,我能够将简单的整数字符串值传递给该方法,但无法传递复杂的对象、键值对或数组
这是我的go方法
func Transform(jsV js.Value, inputs []js.Value) interface{} {
message := inputs[0].String()
fmt.Println(inputs) // How to access objects here
h := js.Global().Get("document").Call("getElementById", "message")
h.Set("textContent", message)
return nil
}
func init() {
fmt.Println("Hello, WebAssembly!")
c = make(chan bool)
}
func main() {
js.Global().Set("Transform", js.FuncOf(Transform))
println("Done.. done.. done...")
<-c
}
当我传递像 {name:"Something"}
这样的对象时,它只打印对象,我在文档中搜索但找不到任何 link
如果您将 Transform
呼叫为:
globalThis.Transform({name:"Something"})
在这种情况下,inputs[0]
是对象。为了获得 name
属性,您应该使用 Get
:
message := inputs[0].Get("name").String()
对于 array
你有 .Index()
而对于对象(如上所示)你有 .Get()
.
我正在使用浏览器将 wasm 文件构建到 运行,我能够将简单的整数字符串值传递给该方法,但无法传递复杂的对象、键值对或数组
这是我的go方法
func Transform(jsV js.Value, inputs []js.Value) interface{} {
message := inputs[0].String()
fmt.Println(inputs) // How to access objects here
h := js.Global().Get("document").Call("getElementById", "message")
h.Set("textContent", message)
return nil
}
func init() {
fmt.Println("Hello, WebAssembly!")
c = make(chan bool)
}
func main() {
js.Global().Set("Transform", js.FuncOf(Transform))
println("Done.. done.. done...")
<-c
}
当我传递像 {name:"Something"}
这样的对象时,它只打印对象,我在文档中搜索但找不到任何 link
如果您将 Transform
呼叫为:
globalThis.Transform({name:"Something"})
在这种情况下,inputs[0]
是对象。为了获得 name
属性,您应该使用 Get
:
message := inputs[0].Get("name").String()
对于 array
你有 .Index()
而对于对象(如上所示)你有 .Get()
.