我正在开发代码生成工具,我正在使用Lodash来模拟输出文件。当我尝试从_.template(XXX)
运行结果函数时,我得到了
未定义“AppData”(模板变量的名称)。
我试图在有和没有AppData变量的情况下调用temp
,并且都给了我
“ReferenceError:未定义AppData”
templates.forEach((template) => {
let temp = _.template(template, { AppData: AppData });
output = temp(AppData);
});
这是AppData对象:
let AppData = { clientId: clientId,
appId: applicationId,
intents: ['Testing1',
'Testing2',
'Testing3',
'Testing4'
]};
以下是3个模板中的一个:
<% _.each(AppData.intents, function( intent ){ %>
<transition event="<%=intent%>" target="<%=intent%>">
<state id="<%=intent%>">
<onentry>
<assign location="href_answer" expr="tfs.getKBAPIUrl(DNIS, environment, '<%=intent%>')"/>
<assign location="reason" expr="'<%=intent%>'"/>
<script><![CDATA[presentAnswer(href_answer,reason);]]></script>
</onentry>
</state>
<% }) %>
Stack不允许我发布输出,但它是代表完成模板的函数。
答案 0 :(得分:0)
也许你应该退后一步,先让模板先进行模板化,然后再进行模板化工作,然后再引入更多的复杂性......
var tfsStr = document.querySelector('#tfs-template').textContent;
var compiled = _.template(tfsStr, {
intents: AppData.intents,
_: _
});
我做了一点codepen来测试模板
答案 1 :(得分:0)
我错误地传递了对象,模板正在寻找错误的东西。在模板中,我删除了我的AppData。对象表示法并更新代码看起来像这样。模板正确地获取了值。
templates.forEach((template) => {
let temp = _.template(template);
output += temp(AppData);
});
有点像新手的错误,第一次使用Lodash。