如何在 Ruby On Rails 7 中使用导入映射访问 JS 函数?

Ged*_*ias 6 javascript import-maps ruby-on-rails-7

我是 JS 模块和导入映射的新手,现在我正在使用 Ruby on Rails 7,但我找不到一种方法来让它工作:

Js模块(proposals.js):

function openProposalMirror() ...
Run Code Online (Sandbox Code Playgroud)

应用程序.js

import * as Proposal from "./proposals.js"
Run Code Online (Sandbox Code Playgroud)

论观点:

onclick="Proposal.openProposalMirror()"
Run Code Online (Sandbox Code Playgroud)

错误:未捕获引用错误:提案未定义

如何在视图上访问 openProposalMirror() 函数?

Lam*_*han 7

一种方法是将 分配Proposal给对象window.Proposal

您可以直接在里面设置,application.js如下所示:

// proposals.js
function openProposalMirror() {}
export { openProposalMirror }

// application.js
import * as Proposal from "./proposals.js"
window.Proposal = Proposal

// view
onclick="Proposal.openProposalMirror()"
Run Code Online (Sandbox Code Playgroud)

您还可以重新导出Proposal然后导入并将其分配给标签(在视图中)中的application.js对象,如下所示:window.Proposal<script>

// application.js
import * as Proposal from "./proposals.js"
export { Proposal };

// view
<%= javascript_importmap_tags %>

<script type="module">
  import { Proposal } from "application"
  window.Proposal = Proposal;
</script>
Run Code Online (Sandbox Code Playgroud)