gpt4 book ai didi

javascript - 如何从给定上下文数据对象的 meteor 模板生成 HTML 输出(版本 0.8+)

转载 作者:行者123 更新时间:2023-11-28 19:54:03 24 4
gpt4 key购买 nike

我正在尝试将meteor与另一个JS框架集成。在最新的 Blaze 升级(即 0.8 之前的版本)之前,我的工作相当顺利。为了使其正常工作,我需要将 Meteor 模板渲染为 HTML 字符串。此外,我需要能够提供一个数据对象来提供模板中包含的变量的值。

0.8 之前,我可以简单地执行以下操作:

var myTemplateName = 'someTemplateName';
var myTemplateVariableData = {myTemplateVariableData: {'xxx': 'some data}};
var myTemplateHTML = Template[myTemplateName].render(myTemplateVariableData);

当然,这不再有效。然而,我必须认为即使在 0.8 之后仍然有一些方法可以做到这一点。我已经相当接近以下内容:

var myTemplateVariableData = {'xxx': 'some data};
var templateName = 'someTemplateName';

var myTemplateHTML = "";
var dr = new UI.DomRange; // domain range

var loadedTemplate = Template[templateName].extend(
{
data: function () {
return { myTemplateVariableData: myTemplateVariableData }
}
}
);

var renderedTemplate = loadedTemplate.render();

UI.materialize(renderedTemplate, dr, null, dr.component);

for (var member in dr.members) {
if (dr.members.hasOwnProperty(member)) {
var testHTML = dr.members[member].innerHTML;
if (testHTML) {
myTemplateHTML = myTemplateHTML + testHTML
} else {
myTemplateHTML = myTemplateHTML + dr.members[member].textContent
}
}
}

此尝试结果的问题是,如果我尝试这样的事情:

{{#if myTemplateVariableData.xxx}}<span>&nbsp;{{myTemplateVariableData.xxx}}</span>{{/if}}

我将显示跨度,但除了   之外没有其他内容。似乎在 if block 内部时,它丢失了上下文并且无法再看到“this”对象上的 myTemplateVariableData 属性。

我怀疑有一种更简单的方法可以完成我在这里尝试做的事情,但我目前没有想法,所以我想我应该将其发布在这里,看看是否有其他人尝试过做类似的事情。

最佳答案

我认为我的解决方案更直接一点:

function html(contextObject, templateName) {
return Blaze.toHTML(Blaze.With(contextObject, function() { return Template[templateName]; }));
}

用途:

模板文件

<template name="myTemplate">
<div id="{{myid}}"></div>
</template>

在一些JS文件中

var myhtml = html({myid : 11}, "myTemplate") //<div id="1"></div>

关于javascript - 如何从给定上下文数据对象的 meteor 模板生成 HTML 输出(版本 0.8+),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22904998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com