假设我正在存储<div>{{name}}</div>
and <div>{{age}}</div>
在我的数据库中。
然后我想获取第一个 HTML 字符串并将其呈现在模板中 -{{> template1}}
它只渲染第一个字符串{{name}}
车把在里面。然后我想给出新生成的模板/html数据,以便它可以用实际的数据填充车把name
从数据库中,这样我们就可以得到<div>John</div>
。我试过做
<template name="firstTemplate">
{{#with dataGetter}}
{{> template1}}
{{/with}}
</template>
其中 template1 定义为
<template name="template1">
{{{templateInfo}}}
</template>
templateInfo 是从数据库返回前面提到的带有句柄的 html 字符串的帮助器。
dataGetter 就是这样(只是一个例子,我正在使用不同名称的集合)
Template.firstTemplate.dataGetter = function() {
return Users.findOne({_id: Session.get("userID")});
}
我无法填充 {{name}}。我尝试了几种不同的方法,但 Meteor 似乎不明白字符串中的把手需要用数据进行评估。我使用的是 0.7.0,所以没有 Blaze,由于我正在使用其他软件包,我目前无法升级,他们只是还没有 0.8+ 版本支持。任何关于如何让它发挥作用的想法都非常感谢。
在 1.0 中,上述方法都不起作用。我让它与客户端代码中定义的以下函数一起使用。关键是将选项 { isTemplate: true} 传递给编译函数。
var compileTemplate = function(name, html_text) {
try {
var compiled = SpacebarsCompiler.compile(html_text, { isTemplate:true });
var renderer = eval(compiled);
console.log('redered:',renderer);
//Template[name] = new Template(name,renderer);
UI.Template.__define__(name, renderer);
} catch (err){
console.log('Error compiling template:' + html_text);
console.log(err.message);
}
};
您可以在客户端上使用类似以下内容进行调用:
compileTemplate('faceplate', '<span>Hello!!!!!!{{_id}}</span>');
这将在您的 html 中以 UI 动态呈现
{{> Template.dynamic template='faceplate'}}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)