从html文件中的coffeescript文件调用函数[重复]
Posted
技术标签:
【中文标题】从html文件中的coffeescript文件调用函数[重复]【英文标题】:Call function from coffeescript file in html file [duplicate] 【发布时间】:2015-08-24 05:12:10 【问题描述】:我是 coffeescript 的新手。在包含我的咖啡脚本文件functions.coffee 后,会生成以下文件main.js:
(function e(t,n,r)function s(o,u)if(!n[o])if(!t[o])var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",fvar l=n[o]=exports:;t[o][0].call(l.exports,function(e)var n=t[o][1][e];return s(n?n:e),l,l.exports,e,t,n,r)return n[o].exportsvar i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s)(1:[function(require,module,exports)
'use strict';
require('../../modules/common/frontend/functions');
,"../../modules/common/frontend/functions":2],2:[function(require,module,exports)
//Link selection in menu
function setCurrentlink()
var currenturl=window.location.href;
var part=currenturl.match(/\n\/displaywizard\/(.*)$/g);
alert(part);
...
,],,[1])
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9icm93c2VyLXBhY2sv...
我一直试图从 html 文件中调用函数 setCurrentlink 为:
<script type="text/javascript">setCurrentlink();</script>
我尝试将指向 js 文件的链接放在页面底部的 head 部分,但我收到一条错误消息,提示“找不到变量 setCurrentlink”。请帮我找出我的错误或我遗漏的任何东西。
functions.coffee
#@export functions
#Link selection in menu
setCurrentlink = ->
currenturl = window.location.href
part = currenturl.match(/\n\/displaywizard\/(.*)$/g)
alert currenturl
return
...
【问题讨论】:
【参考方案1】:您的函数是在函数中定义的,因此它的范围仅限于该函数。您需要全局定义函数才能使其正常工作。也就是说,您可能会以错误的方式处理此问题。如果我有更多关于您要完成的工作的信息,我可以提供进一步的建议。
【讨论】:
另外,看起来您正在使用一个打包实用程序来保护您免于发布到全局范围,正如我所提到的,这通常是一件好事。 谢谢@Shawn。我正在使用一个名为 I-tier 的框架,它由 node.js 和 coffeescript 支持。需要的 JS/coffee 文件的路径在 core/frontend/main.coffee 中提到require /path/to/file
,然后使用 gulp watch
后,在 assets 中生成文件 main.js。我要做的就是调用在指定的咖啡或 js 文件之一中定义的函数。我该怎么做?
它需要您的脚本并将它们放在一个立即调用的函数表达式 (iife) 中,用于限制变量范围。如果您确定希望此函数全局可用,则可以将其添加到 Window 对象。但同样,请不要,你的方法是错误的。我对 I-Tier 一无所知,但您可能正在使用该框架。看来您指的是 Groupon 的交互层框架。如果您有指向框架主页的链接会有所帮助。
是的,你是对的。我正在使用 Groupon 的 I-Tier 框架。不幸的是,框架文档需要我无法提供的登录凭据。
明白了。我会查看这些文档并找出你应该如何做任何你想做的事情 - 很确定他们不希望你像这样在全局范围内操作。以上是关于从html文件中的coffeescript文件调用函数[重复]的主要内容,如果未能解决你的问题,请参考以下文章
ERB模板内的另一个文件形式定义调用CoffeeScript的方法
如何从 Coffeescript 中的 Template.<template>.events api 调用 .hover