jQuery和CoffeeScript scrollTo与Rails和Haml

不同的

我正在尝试使用CoffeeScript Rails进行一个非常简单的任务Haml我没用CoffeeScript太多,但是我想尝试一下。

当用户按下按钮时,我希望视图滚动到特定的div id。在页面顶部,我有一个像这样的ID:

#area_1

我的链接如下所示:

= link_to "Area", "#", id: "area_button_1"

在我自动生成的CoffeScript文件中,我有一个如下所示的函数:

$ ->
  scrollToArea = (button, area) ->
    $(button).click ->
      scrollTo(area, 800)

我尝试在我的一个视图文件中调用此方法,如下所示:

:javascript
  scrollToArea("#area_button_1", "#area_1") 

但这是行不通的。关于我在做什么错的任何想法吗?

亩太短

您可能有范围问题。$ ->是一个函数调用,例如:

$(function() { ...
});

和CoffeeScript会自动将变量的作用域限定在它们的函数范围内,以便您的CoffeeScript变成JavaScript,如下所示:

$(function() {
  var scrollToArea = function(button, area) { ... };
});

整个过程还有一个自执行函数包装器(除非您使用进行编译-b),以防止范围爬行。

您甚至不需要在$ ->这里,该代码仅定义了一个函数,因此它可以随时运行,而无需等待DOM准备就绪。scrollToArea如果您想在其他地方使用它,您还希望将其功能入全局名称空间。结果如下所示:

window.scrollToArea = (button, area) ->
  $(button).click ->
    scrollTo(area, 800)

或者:

# `this` is `window` in this context so `@x` is the same as `window.x`
@scrollToArea = (button, area) ->
  $(button).click ->
    scrollTo(area, 800)

您可能还需要在$()其中使用包装器,在DOM准备就绪之前scollToArea,您可能不想调用scrollToArea

:javascript
  $(function() { scrollToArea("#area_button_1", "#area_1") )

我不是HAML专家,所以希望我不会对语法有所怀疑。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章