从 Scala.js 访问 JS

Access JS this from Scala.js

我正在尝试将此代码从 js 库文档转换为 scala.s:

$('#myTable').on( 'click', 'tbody td', function () {
    editor.inline( this, {
        submitOnBlur: true
    } );
} );

我试过的代码:

$("#table").on("click", ".editable", (thiz: js.Dynamic) => {
  editor.inline(thiz, JC(
    submitOnBlur = true
  ))
})

但它给我错误:

Cannot read property 'contents' of undefined at f.inline

你写的回调函数,即

(thiz: js.Dynamic) => {
  editor.inline(thiz, JC(
    submitOnBlur = true
  ))
}

是1个参数的函数(恰好被称为thiz),而不是接收this作为参数的函数。也就是说,相当于JS中的如下:

function(thiz) {
  editor.inline(thiz, JC(...))
}

要访问 this,您需要将回调函数强制为 js.ThisFunction,如下所示:

((thiz: js.Dynamic) => {
  editor.inline(thiz, JC(
    submitOnBlur = true
  ))
}): js.ThisFunction

这将采用 Scala lambda 的第一个参数(在本例中是唯一的一个)并将其附加到 JavaScript 的 this 值,这就是您想要的。