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
  ))
})

但它给了我错误:

无法读取 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值,这就是您想要的。

最新更新