是否有一种方法可以将变量值(显然是用于读取)从应用程序传递到咖啡库视图(在zappa中)中的嵌入式coffeescript,例如:
.... @render 'index', myVar:"something"
@view index: ->
coffeescript ->
$(document).ready ->
I need to get to myVar here...
如果它能用的话看起来真的很好..。(作为嵌入式javascript的替代方案)
更新:这里有几次尝试。我只是尝试使用嵌入脚本中的字符串作为id。
coffeescript ->
$(document).ready ->
id = myVar
coffeescript ->
$(document).ready ->
id = "#{myVar}"
coffeescript ->
$(document).ready ->
id = @myVar
coffeescript ->
$(document).ready ->
id = "#{@myVar}"
我已经用脚本->函数编写了一些快速的javascript (因为它只是一个字符串,所以我可以很容易地插入变量),所以我已经对它进行了处理,但是coffeescript的方式会更简洁。这是有道理的,范围会丢失在浏览器端--我只是想弄清楚怎么做。
发布于 2012-06-23 14:13:46
我猜“脚本->函数”指的是:
doctype 5
html ->
body ->
h1 "Hello world."
script "myvar = \"#{@myvar}\""
coffeescript ->
console.log myvar
至少这是个老套的解决办法。它也可以通过对象来完成,通常使用JSON或类似的方法进行序列化。
但是我不会把它归类为“干净的coffeescript方式”,所以我想这个问题仍然存在!
这里的问题是,我们在两个上下文中执行coffeescript代码;一种是在生成html以发送到客户端的服务器上,另一种是在客户机本身上通过coffeescript ->
构造的上下文执行。
服务器端了解本地和类似的信息,因此对于运行在服务器上的代码来说,评估基于coffeescript的模板并用值和类似值替换模板变量非常简单。
对客户可不是这样。首先,客户机对局部变量/模板变量一无所知,它只看到页面在服务器端呈现时包含的内容。而且,在coffeescript构造中执行简单的模板扩展也不能工作,因为coffeescript将不知道您是引用客户端上的局部变量还是服务器上的模板变量。理论上,可能会有特殊的序列来表示“在coffeescript代码中扩展模板变量”,但是接下来我们又要在咖啡上创建一种新的模板语言。当然,它可以看起来像普通的coffeescript,例如serverLocal(SOMEREF)
,其中SOMEREF将被相应的值替换。
理论上,Coffeecup可以支持共享所有(或所选)局部变量的构造,并使用类似于我前面展示的script
哈克的" hack“作为访问客户端的变量,而且它可能没有太大的不同,除非使用JSON或类似的方法来支持比简单字符串更多类型的数据。
https://stackoverflow.com/questions/11166715
复制相似问题