无法使用热线/刺激从 javascript 控制器引用函数

问题描述 投票:0回答:1

我不确定这是否是本地设置问题,或者是否是代码问题,但我在现有控制器上使用新功能时遇到问题。该控制器可能从一开始就从未成功导入。即使在布局中指定了控制器并在视图中引用它之后,我仍被告知它引用了未定义的方法:

Error

我为启动做了以下操作:

$ rm -rf public/assets
$ rails assets:precompile
$ bundle install
$ rails s

这就是我所拥有的

  # application.html.erb
  <body data-controller="modal data">
    
    <%= yield %>

  </body>
// javascript/controllers/modal_controller.js
import { Controller } from "@hotwired/stimulus"

export default class extends Controller {
  static targets = ["container", "background", "panel", "terms"]

  changeVisibility(element, visible) {
    console.log(element, hidden);
    if (visible) {
      $(element).on('click', function () {
        $('#terms_modal').removeClass('hidden');
      });
    } else {
      $(element).on('click', function () {
        $('#terms_modal').addClass('hidden');
      });
    }
  };
}
# app/views/home/girl.html.erb
<p>You agree to our <a class="text-red open_terms" data-action="click->modal#changeVisibility('terms_modal', true)">Terms and conditions</a></p>
// app/javascript/controllers/index.js


// This file is auto-generated by ./bin/rails stimulus:manifest:update
// Run that command whenever you add a new controller or create them with
// ./bin/rails generate stimulus controllerName

import { application } from "./application"

// other controllers

import ModalController from "./modal_controller"
application.register("modal", ModalController)

编辑:

我已经确认控制器已成功注册并加载!

  connect() {
    console.log("connected");
  };

并且正在监视该文件,因为这是控制器中的新功能。

enter image description here

javascript ruby-on-rails hotwire-rails
1个回答
0
投票

我只是叫错了。从 @crodev 那里得到线索,我错误地传递了参数。即使在将它们建立为数据参数之后,我仍然将函数调用为

click->modal#changeVisibility()
,而它应该是
click->modal#changeVisibility

© www.soinside.com 2019 - 2024. All rights reserved.