Dojo contentpane / tab解析问题

时间:2011-07-08 19:11:49

标签: parsing tabs widget dojo

我在将HTML标记解析为Dojo小部件时遇到问题。这就是我在做的事情:

var tab = new dijit.layout.ContentPane({
    title: "xyz",
    parseOnLoad: false,   //I am doing this intentionally
    href: "some-relative-url"
});

tabPane.addChild(tab);

现在,如果我用parseOnLoad = true来测试它,我会很好地加载我的小部件。但是,我试图在将HTML转换为小部件之前处理它。所以我通过添加parseOnLoad:false选项来延迟解析。当我的标签被加载时(即Ajax调用完成),我绑定了一个要调用的函数,如下所示:

dojo.connect (tab, "onDownloadEnd", myFunction);

function myFunction() {

   //manipulate the HTML code via this.content
   dojo.parser.parse(this);   //this doesn't do anything. I tried many variations!
}

那么当我这样做时会发生的事情是我最终加载了标签但没有小部件,只是标准的HTML控件。那么为什么在这种情况下不会触发解析器,我该怎么做才能使它在我操作的HTML上工作呢?

由于

1 个答案:

答案 0 :(得分:2)

该上下文中的

this可能是window对象,因为您没有专门设置connect中的范围(来自您发布的代码我假设myFunction()是一个自由的功能,而不是一种方法。

您需要传递dojo.parser.parse DOM节点。假设tab是一个小部件,如果在dojo.parser.parse(tab.domNode)的可用性上下文中定义了该函数,则可以使用tab。如果this的范围限定为标签窗口小部件,那么您可以在评论中使用dojo.parser.parse(this.domNode)

您可以使用全能的强大dojo.hitch强制范围:)阅读文档here,我推荐How this works中的Javascript garden部分。