【发布时间】:2013-09-17 01:30:51
【问题描述】:
我正在编写一个very simple Yesod message list,它使用 AJAX 添加新列表项而无需重新加载页面(在其他用户修改数据库的情况下,或客户端自己添加项目的情况下)。这意味着我必须在 Halmet 模板(页面初始加载时)和 Julius 模板(动态添加发生时)中对消息项的 HTML 结构进行编码。它们看起来像这样:
在homepage.hamlet:
$if not $ null messages
<ul id=#{listId}>
$forall Entity mid message <- messages
<li id=#{toPathPiece mid}>
<p>#{showMarkdown $ messageText message}
<abbr .timeago title=#{showUTCTime $ messagePosted message}>
在homepage.julius:
function(message) {
$('##{rawJS listId}').prepend(
$('<li>')
.attr('id', message.id)
.append('<p>' + message.text + '</p>')
.append($('<abbr class=timeago />')
.attr('title', message.posted).timeago())
.slideDown('slow')
);
}
我希望能够以某种方式统一这两种表示。是我运气不好,还是我可以以某种方式滥用小部件来生成 HTML 响应和在 JavaScript 文件中填写代码?
Note: 当然,我知道模板的工作方式必须非常不同,因为 AJAX 调用是从 JS 对象而不是服务器获取其值。这是一个很长的尝试,但我想我会看看是否有人以前考虑过这个问题。
【问题讨论】: