这是一个zappajs/coffeescript的新手问题,我试着写一个脚本,它从mysql中收集数据,并用div而不是table来呈现结果,到目前为止只用了一行。我的问题是如何通过模板传递输出的整个结果数组?下面的代码示例,欢迎任何批评,谢谢:
@post '/', (req, res) -> #POST FOR SHOWSTOCK
MysqlConnection = mysql.createConnection(
...
)
MysqlConnection.connect()
....
else
sql = "select art.artcode,art.artname, art.artsonst, groessen.colcode,groessen.artgrb,groessen.artwidth,groessen.artist,date_format(artoffdate,'%d-%m-%y') as mydate, groessen.soreason from groessen,art where groessen.artcode = art.artcode and art.artcode = " + MysqlConnection.escape(req.body.art.artcode)
MysqlConnection.query sql, (err, rows) ->
throw err if err
...
exports.art = rows
...
MysqlConnection.end
@redirect '/showstock' # 'back' or 'home'= "/"
@get '/': ->
@render index: {
}
@view index: ->
h1 img src: '/BW_AL_Logo_Blue.jpg', align:'left', alt:'Logo' , width:240, height:120, top:25, left:370 ,position:'absolute'
h2 style: "font-family:sans-serif;;position: absolute; top: 10px; width: 250px; left: 350px; height: 25px; background-color: white", 'XYZ Stock Information'
form method: "post", action: "/", ->
div "#Artcode", style: "position: absolute; top:60px; left:680px; width: 121px; height: 21px;", ->
input type: "text", name:"art[artcode]"
div "#Submit", style: "position: absolute; top:60px; left: 840px; width: 121px; height: 21px;", ->
input type: "submit", value: "Submit"
@get '/showstock': ->
@render showstock: {
artname0: exports.art[0].artname
...
}
@view showstock: ->
h1 img src: '/BW_AL_Logo_Blue.jpg', align:'left', alt:'Logo' , width:240, height:120, top:25, left:370 ,position:'absolute'
...
div style: "position: absolute; left: 10px; top: 195px; height: 400px; width:1200px; padding: 2px; border:2px solid gray;",->
div "#colcode", style: "height: 3px;width:90px;float:left;",->
b "COLOUR"
br()
@colcode0
div ...
发布于 2012-07-28 21:36:55
下面是如何将变量传递给视图函数并使用它们(来自http://zappajs.org/docs/crashcourse/):
@get '/': ->
@render index: {foo: 'bar'}
@view index: ->
@title = 'Inline template'
h1 @title
p @foo
至于迭代结果集中的行,您必须执行以下操作:
@view index: ->
for row in @foo.rows
div '', "#{row.itemno}: #{row.itemname}"
确切的细节取决于您使用的模板引擎(从您编写的内容来看,它看起来像咖啡杯)。请记住,咖啡模板实际上只是Coffeescript代码,具有许多方便的函数(与HTML标记命名相同)和一些用于呈现“子树”的约定(通过传递呈现子树的函数)。因此,要在数据对象上迭代,只需编写Coffeescript代码即可,调用Coffeecup方便的方法来生成html文本。
假设您的数据集可能很大,那么使用浏览器重定向(如您的代码所示)不是将数据从一个视图传递到另一个视图的正确方法。
如果您将"showstock“函数中的代码重构为一个普通的成员函数,传递任何请求/响应变量(我看到Zappa隐式传递了这些变量,但我对Zappa不太了解,无法提供确切的答案)和一个row对象,只需让该函数返回呈现的文本即可。通过从"/“处理程序和"/showstock”处理程序调用此方法,您应该能够处理不同的用例,而无需重复代码或尝试将大型数据对象作为HTTP数据对象进行传递。
https://stackoverflow.com/questions/11700471
复制相似问题