javascript - 作为 dojo 模板添加的小部件元素的registry.byId

标签 javascript dojo

我正在尝试访问已作为模板添加到小部件中的内容 Pane ,但我似乎可以使用registry.byId 来获取它:

我的模板——我正在尝试访问div“ map ”:

<div>

      <div id="map" 
           data-dojo-type="dijit/layout/ContentPane" 
           data-dojo-props="region:'center'" 
           style="padding:0;">im a map
         </div>

</div>

尝试访问“ map ”的小部件代码

define([
  "dojo/_base/declare",
  "dijit/_WidgetBase",
  "dijit/_TemplatedMixin",
  "dojo/text!Templates/LandUse.htm",
   "dijit/registry",
    "dijit/layout/BorderContainer", "dijit/layout/ContentPane", "dijit/TitlePane",
], function (declare, _WidgetBase, _TemplatedMixin, LandUseTpl, registry) {
    return declare([_WidgetBase, _TemplatedMixin], {
        templateString: LandUseTpl,
        start: function () {//I've also tried postCreate but same result
            var Mymap = registry.byId("map");//this is always undefined
            if (Mymap) {
                alert("map found");
            }

        }
    });
});

实例化我的小部件并调用我的 htm 主页面上的启动函数:

...
LU = new LandUse({}, "tool");
LU.start();

...

如何获取此 map div 以便添加内容?

谢谢

最佳答案

您应该继承dijit/_WidgetsInTemplateMixin并使用data-dojo-attach-point属性,例如:

<div>
  <div id="map" 
    data-dojo-type="dijit/layout/ContentPane" 
    data-dojo-props="region:'center'" 
    data-dojo-attach-point="map"
    style="padding:0;">im a map
  </div>
</div>

如果您的操作正确,您应该能够使用 this.map 访问您的小部件(类似于 data-dojo-attach-point 的名称)属性)。

例如:http://plnkr.co/edit/1wBfAh3dwJxYBD1a3Eb6

关于javascript - 作为 dojo 模板添加的小部件元素的registry.byId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25858317/

相关文章:

javascript - 停止播放视频

jsp - 提交 dijit 编辑器内容

javascript - Dgrid - 如何将单元格合并成一行

javascript - dojo/on 和 dojo/aspect 的区别

Dojo:如何查找小部件是否在 dojo 中具有焦点

javascript - 最佳 AJAX TreeView

javascript 函数 if else.皮科费米百吉饼游戏

javascript - onClick 标签内的函数超出 dojo 1.6 的范围

javascript - 当一些滑动解锁时我如何将它发送到特定链接

javascript - WebRTC冰状态= "failed"黑色视频