【发布时间】:2015-09-08 17:10:44
【问题描述】:
所以,我正在构建一个基于 Backbone.js 的应用程序,通过使用模板来呈现一些对象。
它正在工作,但是现在我需要在运行时动态引用对象,我不确定我见过的模板解决方案(下划线、车把、...)是否可以“扁平化”javascript .
为了说明,我有一个对象列表,比如说任务。 我有一个可以这样简化的模型:
{{#each tasks.models as |task|}}
<div>
{{task.name}}
</div>
{{/each}}
现在,我需要在渲染完成后动态使用“任务”对象。例如,做这样的事情:
<div>
{{task.name}} - <button onClick="task.setComplete()" />
</div>
这种方式当然行不通;也不做{{task}}.setComplete()之类的事情,因为{{task}}在渲染时会转换为字符串。
有没有办法做到这一点?
我在想我需要闭包来保留对象,获得它们的唯一方法是不要展平 html,否则一切都会转换为字符串。
有什么想法吗?也许有模板库可以直接生成 DOM 对象,我可以添加到我的文档中?
提前致谢,
【问题讨论】:
-
您使用的是 Backbone,那么为什么要使用
onClick属性而不是通过视图的events处理点击事件?尝试将功能代码与您的显示模板混合通常会导致混乱的混乱。 -
感谢您的意见!如果没有办法在模板中链接,这就是我要做的。但是,我需要将模板中的对象 ID 映射到我的主干代码中的 ID,在多个层上,所以看起来生成的代码会比模板中的直接链接更复杂。
-
你可以像这样在数据属性中折腾
ids:stackoverflow.com/a/7825773/479863
标签: javascript backbone.js handlebars.js underscore.js-templating client-side-templating