如果我的数据库中有一个字段包含像“Hello {{currentUser}}”这样的字符串,有没有办法让该值在呈现到模板时保持反应性?我还想看看是否可以通过帮助程序运行它并处理字符串替换,以某种方式将我自己的变量注入到输出中。
想法?
如果我的数据库中有一个字段包含像“Hello {{currentUser}}”这样的字符串,有没有办法让该值在呈现到模板时保持反应性?我还想看看是否可以通过帮助程序运行它并处理字符串替换,以某种方式将我自己的变量注入到输出中。
想法?
到目前为止我提出的一种解决方案:
存储在数据库中的消息类似于:“你好,[用户],你好吗?”
然后,我像往常一样使用 {{#each}} 和预定义的模板呈现来自数据库的消息。
当消息实际呈现时,我通过一个助手传递它。帮助器将所有 [] 替换为,<span class="$1"></span>
以便我可以直接针对每个项目。
调用消息模板的 render() 后,我知道消息正文包含已清理和准备好的内容(带有跨度),因此我使用this.$('.user').each()
并循环遍历跨度的每个实例。
我还在我的页面中创建了一个名为“placeholderUser”的特殊模板,它只包含对 {{user}} 的调用。我已添加Template.placeholderUser.user = function(){}
到代码中以提取值并保持反应性。
哇!现在我已经设置了结构,当在“each”中循环时,我可以调用:
UI.insert(UI.render(Template.placeholderUser), el)
,它将在给定的范围内呈现模板并保持所有反应性。
这是超级hacky,但它的工作原理。还有其他更好的解决方案吗?