带有模板的Dojo小部件,在小部件加载时更改模板(添加DOM元素)
Dojo widget with template, change template on widget load (add DOM element)
我想用一个非常简单的html模板创建一个dojo小部件:
<div id="contentExternal"></div>
然后在小部件加载上,我想从外部服务加载某些url。然后在url被加载后,我想让一个withsrc参数等于这个加载的url。我写过:
dojo.provide("dojoModules.ExternalWebsitePane");
dojo.require("dijit._Widget");
dojo.require("dijit._Templated");
dojo.require("dojoModules.ConfigurationPane");
dojo.declare("dojoModules.ExternalWebsitePane", [dijit._Widget, dijit._Templated],
{
templateString: dojo.cache("dojoModules", "templates/ExternalWebsitePane.html"),
widgetsInTemplate: false,
constructor: function() {
}
,
startup: function() {
//Get Config
var serviceParams = new Object();
serviceParams.ServiceType = "GetConfig";
ecm.model.Request.invokePluginService("ExternalWebsitePlugin", "ExternalWebsiteService",
{requestParams: serviceParams, requestCompleteCallback: function(response) {
iframe = new Object();
iframe.src = response.configuration.value;
iframe.class = "iframe1";
var content = document.getElementById('contentExternal');
content.appendChild(iframe);
}});
}
});
但是在
上代码执行失败var content = document.getElementById('contentExternal');
content.appendChild(iframe);
表示内容为空。我怀疑div从html模板还没有加载。我应该如何添加一个元素?还是什么时候?
通常当您有模板化的小部件时,您应该使用Dojo附加点。如果您有以下模板(例如):
<div data-dojo-attach-point="contentExternalNode"></div>
然后,您可以从与附加点同名的属性访问该节点,例如:
this.contentExternalNode.appendChild(iframe);
我通常在小部件的postCreate
中做这些事情(我不知道它是否已经在startup
中可用)。这里有一篇关于编写自己的小部件(以及更多关于模板化小部件的信息)的文章。
注意:如果您使用Dojo 1.6,您需要使用dojoAttachPoint
属性,而不是data-dojo-attach-point
。
相关文章:
- 微笑时间轴小部件添加自定义字段
- 如何在小部件中添加外部javascript库和样式表
- 是否可以在数字输入框中的小按钮中添加事件侦听器
- 添加/删除/更改输入文本的部分值
- 添加一个小部件gridster.js
- 如何将一个小部件添加到 DOJO 中的另一个小部件
- 在 JavaScript 事件中添加最小值和最大值
- Dojo:我可以将两个或多个小部件添加到同一个边界容器区域吗?
- 将小时数添加到 JavaScript 日期对象错误
- 如何有效地将多个子 Dijit 小部件添加到 LayoutContainer
- 如何将小部件添加到Dojo gridx/Grid头中
- 为可嵌入的角度小部件添加设置
- 如何向JQuery选项卡小部件添加方法
- 创建后向javascript小部件添加onchange事件
- 将JavaScript分割成小块添加到数组中
- 使用bxslider将小图像添加到图像滑块标题中
- 引导时间选取器将小时数添加到默认时间
- 将显示“Hello World”的小部件添加到具有浏览器扩展的已定义网页
- 在较大的动画函数中为3个小动画添加循环函数
- 如何在extjs中为小部件添加工具提示