controller.js.coffee 中的函数

2024-04-03

我在使用 CoffeeScript 创建函数时遇到一些问题,我想我错过了一些东西。对于我的用户控制器,我想为注册表单创建客户端验证。我认为我错过了这一切如何运作的一些基本内容。

<%= form_for @user, :html => {:onsubmit => "return validate_signup_form();"} do |f| %>

咖啡脚本(资产/users.js.coffee):

validate_signup_form = () ->
    alert "Hi"
    return false

预期输出:

var validate_signup_form;
validate_signup_form = function() {
  alert("Hi");
  return false;
};
validate_signup_form();

实际输出:

(function() {
  var validate_signup_form;
  validate_signup_form = function() {
    alert("Hi");
    return false;
  };
}).call(this);

事实上,一切都按照预期进行。正如你所读到的here http://jashkenas.github.com/coffee-script/#lexical_scope,Coffeescript 将您的代码包装在匿名函数中,以防止全局命名空间的污染。如果您只看一下示例,您可能会错过这一点,但文档明确指出:

虽然压抑在这 为了清晰起见,所有文档 CoffeeScript 输出被包装在 匿名函数:(function(){ ... })();该安全包装结合了 随着自动生成 var 关键字,使其变得非常 很难污染全球 命名空间意外。

为了访问在此人工作用域内声明的对象、变量或方法,您需要使其在全局作用域内显式可用,例如像这样:

window.validate_signup_form = validate_signup_form

在您提到的情况下,我肯定会使用事件来触发该方法。

顺便说一句:方法声明中不需要空括号foo =->工作得很好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

controller.js.coffee 中的函数 的相关文章

随机推荐

  • 减去数据框中的两列

    我的 df 看起来如下 Index Country Val1 Val2 Val10 1 Australia 1 3 5 2 Bambua 12 33 56 3 Tambua 14 34 58 我想从每个国家 地区的 Val1 中减去 Val
  • SQL Server 中 IsInteger 的最佳等效项

    在 SQL Server 2000 2005 2008 中确定字段值是否为整数的最佳方法是什么 IsNumeric 对于多种不太可能转换为整数的格式返回 true 示例包括 15 000 和 15 1 您可以使用类似的语句 但这似乎只适用于
  • Docker 检查格式检索端口映射[重复]

    这个问题在这里已经有答案了 我想使用 docker Inspection 检索映射到容器的端口 我发现了类似的内容 docker inspect format NetworkSettings Ports containerid Output
  • 如何进行空合并提交(忽略更改)?

    自动化 CI 工具合并了来自release to master 但是来自发布分支的一些提交应该被忽略 让我们考虑以下示例 发布分支包含两个修复 fix 1应该被忽略并且fix 2应该合并到master base merge fix 2 ma
  • jboss 7 oracle数据源配置

    我目前正在从 jboss 4 3 迁移到 jboss 7 1 1 Final 我正在尝试配置 Oracle 数据源 但它不起作用 以下是我为设置 Oracle 数据源所做的操作 1 下载ojdbc6 11 jar并将其放在文件夹 JBOSS
  • 使用 bootstrap 4 对 3 列进行排序和堆叠

    I have this structure in bootstrap columns And I want you to change to a lower resolution be ordered as follows 我在这里找到了如
  • PHP 致命错误:未找到“COM”类

    将 PHP 升级到 v 5 5 1 后 我收到此错误 Fatal error Class COM not found in C inetpub wwwroot ndsystems database engine mssql engine p
  • 如何使用 nth-child 为具有行跨度的表格设置样式?

    我有一张表 其中一行使用行跨度 所以 table tr td td td td td td tr tr td td td td td td tr tr td td td td tr tr td td td td td td tr table
  • 如何在 Java 中将日期从 MM/YYYY 转换为 MM/DD/YYYY

    我想将日期从 MM YYYY 转换为 MM DD YYYY 我如何使用 Java 中的 SimpleDateFormat 来做到这一点 注 DD可以是该月的开始日期 请浏览http download oracle com javase 1
  • ggplot 中的概率热图

    I asked this question https stackoverflow com questions 7305803 plot probability heatmap hexbin with different sized bin
  • 如何获取 Linux/UNIX 上当前网络接口吞吐量统计信息? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 MRTG 等工具提供特定接口 例如 eth0 上当前网络利用率的网络吞吐量 带宽图表 如何在 Linux UNIX 上的命令行返回该信息
  • 禁用一个函数的返回值优化

    struct X void a void b X foo void u void v foo 在汇编器中实现 i386 X 类型的返回值的地址作为隐藏参数传递给 foo 如果使用 O0 编译测试代码 则代码将按预期工作 如果使用 O3 编译
  • AH01626:要求全部授权授权结果:已授权

    我在我的网站上运行 apache 2 4 6 我不断在我的 apache 错误日志中看到这条消息一遍又一遍地重复 Tue Nov 10 01 42 40 659710 2015 authz core debug pid 10727 mod
  • 开源 BPM 工具(如 Activiti、bonita)和 Windows Workflow Foundation 之间有什么区别

    我试图找到一个基于asp net的免费开源BPM工具 但不幸的是我没有找到这样的工具 但最近我读到一篇关于Windows Workflow Foundation的文章 那么它是否提供了类似于开源BPM工具如Activiti bonita J
  • 为什么在 WPF 中将 INotifyPropertyChanged 与绑定一起使用?

    我注意到 几乎我在互联网上找到的有关绑定的每个示例都有一个类 绑定到另一个属性 该类继承 INotifyPropertyChanged 接口并在该类属性的 set 部分中使用一个方法 我尝试从绑定示例中删除该部分 其工作原理与该方法相同 这
  • 正则表达式:以不同顺序匹配组而不重复组

    假设我有两个这样的字符串 XABY XBAY 匹配两者的简单正则表达式如下所示 X AB BA Y 但是 我遇到的情况是 A 和 B 是复杂的字符串 我正在寻找一种方法来避免必须将它们分别指定两次 在 的每一侧 有没有办法做到这一点 这可能
  • Laravel Sanctum 自定义守卫

    我的 laravel 应用程序中有多个守卫 Code config auth php defaults gt guard gt user passwords gt users guards gt user gt driver gt toke
  • 目标文件和静态库(归档文件)有什么区别?

    似乎归档文件可以从目标文件生成 ar rvs libprofile a profile o 目标文件和归档文件有什么区别 在我看来 两者都可以直接与 gcc 一起使用 例如 gcc c profile o or gcc c libprofi
  • 为什么我的闹钟马上就响了? (安卓)

    尝试为一周中的某些天设置闹钟 但目前很困惑为什么这个闹钟会立即被触发 无论我以小时和分钟的形式传递什么 我知道一周中的某一天是错误的 只是还没到那一步 public void setReminder int hr int min int d
  • controller.js.coffee 中的函数

    我在使用 CoffeeScript 创建函数时遇到一些问题 我想我错过了一些东西 对于我的用户控制器 我想为注册表单创建客户端验证 我认为我错过了这一切如何运作的一些基本内容 咖啡脚本 资产 users js coffee validate