我有两个模板文件:一个用于表单(loginFormTemplate),一个用于对话框(dialogTemplate)。当我把它们放在一起时,我只会在我的表单上得到 i18n(比如 ${i18n.username} 等),而不是我的对话框 html,它显示的是 ${undefined}。我已经在我的 nls 文件中明确定义了它。为什么?这是我构建对话框时的代码。
var template = lang.replace(dialogTemplate, {
form: loginFormTemplate
});
var contentWidget = new (declare(
[_Widget, _TemplatedMixin, _WidgetsInTemplateMixin],
{
templateString: template,
i18n: i18n
}
));
我可以像在 dialoTemplate 中的表单一样创建“变量”并传递我的 i18n 值,但我觉得它不太优雅。我只想做一次。所以,它会是这样的。
var template = lang.replace(dialogTemplate, {
form: loginFormTemplate,
_ok: i18n.okLabel,
_cancel: i18n.cancelLabel
});
var contentWidget = new (declare(
[_Widget, _TemplatedMixin, _WidgetsInTemplateMixin],
{
templateString: template,
i18n: i18n
}
));
这是我用 phusick 回答的解决方案(我的表格用 %[] 表示):
var template = lang.replace(
dialogTemplate,
{form: loginFormTemplate},
/\%\[([^\]]+)\]/g
);