首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在解析的dojo ContentPane中使用dijit要求

如何在解析的dojo ContentPane中使用dijit要求
EN

Stack Overflow用户
提问于 2012-09-22 17:02:53
回答 2查看 1.5K关注 0票数 0

我试着做一个简单的任务。此任务是将HTML dijit.Form加载到ContentPane中。在加载这个HTML之前,我不知道需要哪个dijit,但是加载的HTML将包含适用的require来加载它们。

因此,为了能够从加载的HTML中执行脚本,我使用了dojox.layout.ContentPane。但是,当我将parseOnLoad设置为true时,解析会在脚本执行之前进行,所以第一次加载内容时dijit是不可用的。另外,当我尝试使用onDownloadEnd回调时,当这个回调运行时,require的dijit仍然没有加载。

我自己唯一能想到的就是使用setTimeout将解析推迟到执行这些脚本的时候。不过,我不喜欢这个解决方案,因为它有时会失败,这会使应用程序不那么负责任。

那么,我应该如何执行解析,以便在运行加载的require语句之后立即发生呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-22 20:28:12

我可以看到两种可能的解决方案--都使用dijit/layout/ContentPane

  1. 使用Dojo1.8.0,因为解析器支持自动要求,它将加载依赖关系本身,如下所示:http://jsfiddle.net/phusick/vr4h4/
  2. 将依赖项列表放到表单模板中,例如在data-config属性中

编辑:我刚刚想到编写一个auto需求(对于Dojo <1.8)只是为了添加一个简短的getDependencies()方法,所以您不需要像上面的第二个选项中提到的那样列出依赖关系:

代码语言:javascript
复制
function getDependencies(/*DOMNode*/ containerNode) {
    var deps = [];
    query("[data-dojo-type]", containerNode).forEach(function(node) {
        var dep = node.dataset.dojoType.split(".").join("/");
        if(!~array.indexOf(deps, dep)) {
            deps.push(dep);
        };            
    });
    return deps;
}

看到它在jsFiddle:http://jsfiddle.net/phusick/hnjWt/上工作

票数 2
EN

Stack Overflow用户

发布于 2012-09-22 19:06:00

唯一的选项是在代码中设置dojoConfig.async = false或在require语句中设置。

由于这个原因,没有加载模块;虽然仍在下载模块,但必需()不阻塞解析器运行。

有关此示例的运行,请参见http://jsfiddle.net/zA9cJ/1/

代码语言:javascript
复制
require(["dojox/layout/ContentPane", "dojo/domReady!"], function(pane) {

    var p = new pane({ parseOnLoad: true, executeScripts: true }, 'container');
    var content = '<script type="text/javascript">'+
        'require('+
        //////////////////////////
        '{async:false},'+ ////////
        //////////////////////////
        '["dijit/form/Button"]);'+
        '<'+'/script>'+
        '<div data-dojo-type="dijit.form.Button">Button</div>';
    p.set("content", content);
});​
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12545899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档