在自定义小部件中从xhr返回的内容中解析dojoAttachEvent?

时间:2010-01-14 20:26:43

标签: widget dojo

而不是典型的自定义窗口小部件混合在_Templated中为它的标记,我想要一个只是混合在_Widget中的窗口小部件,然后执行xhrGet来获取标记。另外,这是我需要帮助的部分,我希望dojo在窗口小部件,连接节点和事件的上下文中解析dojoAttachPoint和dojoAttachEvent的xhr结果文本。

我为小部件尝试过的核心如下:

dojo.provide("com.example.widget.DynamicAttachedTemplate");

dojo.require("dijit._Widget");
dojo.require("dojo.html");

dojo.declare("com.example.widget.DynamicAttachedTemplate", [dijit._Widget], {
  postCreate: function() {
    dojo.xhrGet({
      url: "/product/ajax/editTemplate",
      content: { id: 1 },
      handleAs: "text",
      preventCache: true,
      load: dojo.hitch(this, function(markup) {
        // this only parses markup for dojoType it seems :(
        dojo.html.set(this.srcNodeRef, markup, { parseContent: true });
      },
      error: function(error) {
        alert(error);
      }
    });
  },

  submitHandler: function(event) {
    dojo.stopEvent(event);
    // handle validation, form submit, etc.
  }
});                                                                      

使用它的页面可能如下所示:

...
<div id="productEditContainer">
  loading...
</div>
...
<script type="text/javascript">
  dojo.addOnLoad(function() {
    dojo.require("com.example.widget.DynamicAttachedTemplate");

    new com.example.widget.DynamicAttachedTemplate({}, dojo.byId("productEditContainer"));
  });
</script>

让我们说从/ product / ajax / editTemplate返回的标记?id = 1是这样的:

<form dojoAttachEvent="onsubmit: submitHandler">
  ...
</form>

最后,我希望xhr返回的模板标记中的dojoAttachEvent =“onsubmit:submitHandler”导致从表单提交连接到窗口小部件提交处理程序方法的事件。我也对更好的方法持开放态度,但是需要在服务器上生成小部件标记,我真的想利用dojoAttach *而不是使用DOM ID并通过小部件设置代码中的dojo.byId手动挂钩。

1 个答案:

答案 0 :(得分:0)

考虑使用内联模板:http://www.sitepen.com/blog/2008/06/24/creating-dojo-widgets-with-inline-templates/ 但是它需要_Templated