Jquery CoffeeScript和Rails:设置和获取全局变量
刚刚进入我的第一个rails应用程序的CoffeeScript部分;以前从未做过JS/CoffeeScript,所以有很多问题。首先是: 在我的应用程序中,用户可以“声称”(拥有)任务(或者我称之为想法)。每个用户在任何给定的时间最多可以有3个想法。因此: 1) 我当前的代码如下所示:Jquery CoffeeScript和Rails:设置和获取全局变量,jquery,ruby-on-rails,coffeescript,Jquery,Ruby On Rails,Coffeescript,刚刚进入我的第一个rails应用程序的CoffeeScript部分;以前从未做过JS/CoffeeScript,所以有很多问题。首先是: 在我的应用程序中,用户可以“声称”(拥有)任务(或者我称之为想法)。每个用户在任何给定的时间最多可以有3个想法。因此: 1) 我当前的代码如下所示: $ -> exports = this exports.claimedCount = 0 $('.claim').bind 'ajax:success', -> $(this).t
$ ->
exports = this
exports.claimedCount = 0
$('.claim').bind 'ajax:success', ->
$(this).text("Claimed")
$(this).addClass("btn-success")
claimedCount++
alert(claimedCount)
这应该做的是声明一个全局varclaimedCount
,并在用户每次提出想法时递增它。is实际上什么都不做:未捕获引用错误:未定义claimedCount
为什么呢?我应该如何定义变量?我需要一个全局变量吗?(每个想法都有自己的索赔按钮)
2) 当用户已经有了一些想法时,他们可能会呈现页面。因此,我需要在第一次呈现页面时使用Rails设置claimedCount
。任何关于这方面的提示都将不胜感激(我是否应该将我的.js.coffee
文件重命名为.js.coffee.erb
,并在那里执行?js init代码的常见位置是什么
非常感谢您提供的帮助。如果您将代码转换为js,您将看到您的变量不是全局变量,因为它位于函数内部
您可以检查如何在coffee脚本中声明全局变量(主要使用window.myvariable
)
关于第二个问题,您可以将值放在html中的隐藏字段中,然后使用jquery选择器获取它
然后在你的js中
$('#claimscont').val()
如果将代码转换为js,您将看到您的变量不是全局变量,因为它位于函数内部
您可以检查如何在coffee脚本中声明全局变量(主要使用window.myvariable
)
关于第二个问题,您可以将值放在html中的隐藏字段中,然后使用jquery选择器获取它
然后在你的js中
$(“#claimscont”).val()
我同意Khaled对第一个问题的回答
在第二个问题上,我宁愿将文件重命名为.js.coffee.erb,以便首先使用erb对其进行预处理,并编写如下内容:
window.claimedCount = <%= @user.claims.count %>
window.claimedCount=
我同意Khaled对第一个问题的回答
在第二个问题上,我宁愿将文件重命名为.js.coffee.erb,以便首先使用erb对其进行预处理,并编写如下内容:
window.claimedCount = <%= @user.claims.count %>
window.claimedCount=
javascript的每一位都应该限定在最小相关DOM元素的范围内。我想我应该开放我使用的内部js‘框架’的源代码。当然,我应该以最有限的方式来定义变量。这就是我的问题:我能把它们限制到什么程度,以及如何限制?我需要全局变量吗?如果没有,我需要什么?基本上,创建一个名称空间:YourAppName
。然后,对于每个页面,您可以在应用程序的一个页面中包含一个名称空间,javascript的每一个部分都应该限定为最小的相关DOM元素。我想我应该开放我使用的内部js‘框架’的源代码。当然,我应该以最有限的方式来定义变量。这就是我的问题:我能把它们限制到什么程度,以及如何限制?我需要全局变量吗?如果没有,我需要什么?基本上,创建一个名称空间:YourAppName
。然后,对于每个页面,您可以在应用程序的一个名称空间中包含一个名称空间。请记住,在生产环境中,您的资产是预编译的,因此声明计数不会更新(除非您重新编译资产).js.coffee.erb
几乎从来都不是一个好主意。请记住,在生产过程中,您的资产是预编译的,因此索赔计数不会更新(除非您重新编译资产).js.coffee.erb
几乎从来都不是个好主意