我尝试使用以下模板模型执行此操作:
<div>
<div data-dojo-attach-point="includeHere"</div>
</div>
和
<div>
${includeHere}
</div>
然后在课堂上我认为应该是这样的:
define([
"dojo/_base/declare",
"dijit/_WidgetBase",
"dijit/_TemplatedMixin",
"dojo/text!./templates/myWidget.html",
"dojo/text!./templates/templateToBeIncluded.html"
], function (
declare,
_WidgetBase,
_TemplatedMixin,
template,
templateToBeIncluded
) {
return declare([_WidgetBase, _TemplatedMixin], {
templateString: template,
buildRendering: function() {
this.includeHere = templateToBeIncluded;
},
});
});
我收到_TemplatedMixin源代码,并尝试按照_TemplatedMixin的方式更改buildRendering函数:
buildRendering: function() {
domConstruct.toDom(templateToBeIncluded, this.includeHere);
},
但是,它也无法发挥作用。这样做的正确方法是什么?我不想在我的.js文件中包含HTML。我想只在模板中使用HTML。
答案 0 :(得分:1)
我解决了。首先,当我在buildRendering方法中简单地引入this.inherited(arguments);
时,它起作用,但HTML没有呈现。它作为原始HTML在页面中出现。所以我尝试将模板中的变量更改为$ {!includeHere)。一旦我这样做,HTML就会正确呈现。
但是仍然存在子模板中的替换变量没有渲染的问题,所以我将buildRendering方法更改为:
buildRendering: function() {
this.includeHere = string.substitute(templateToBeIncluded, this, (v) => v);
this.inherited(arguments);
},
这一切都很好。