未启用Ext.loader是否需要缺少?

| 我对Extjs4 librairie有一些问题。 我想使用treeEditor组件。 萤火虫错误: 错误:未捕获的异常: 未启用Ext.Loader,因此 依赖关系无法解决 动态地。缺少必修课: 扩展树节点 我的代码:
Ext.require([

\'Ext.form.*\',
\'Ext.grid.*\',
\'Ext.tree.*\',
\'Ext.data.*\',
\'Ext.util.*\',
\'Ext.loader.*\',
\'Ext.state.*\',
\'Ext.layout.container.Column\',
\'Ext.tab.TabPanel\'

]);

Ext.onReady(function(){

    // shorthand
    Ext.QuickTips.init();


    var tree = Ext.create(\'Ext.tree.TreePanel\', {
            animate:false,
            enableDD:false,
    //      loader: new Tree.TreeLoader(), // Note: no dataurl, register a TreeLoader to make use of createNode()
            lines: true,
            rootVisible:false,
        //  selModel: new Ext.tree.MultiSelectionModel(),
            containerScroll: false
    });

        // set the root node
        var root = Ext.create(\'Ext.tree.TreeNode\',{
            text: \'Autos\',
            draggable:false,
            id:\'source\'
        });

        tree.on(\'contextmenu\',showCtx);
        tree.on(\'click\',function(node,e){node.select();return false;});
        // json data describing the tree

        var json = [
                {\"text\" : \"1\",\"allowEdit\" : true, \"id\" : 300, \"leaf\" : false, \"cls\" : \"folder\", \"children\" : [
                {\"text\" : \"11\",\"allowEdit\" : true, \"id\" : 3000, \"leaf\" : false, \"cls\" : \"folder\",\"children\" :[
                {\"text\" : \"111\",\"allowEdit\" : true, \"id\" : 300, \"leaf\" : false, \"cls\" : \"folder\",\"children\" :[
                {\"text\" : \"1111\",\"allowEdit\" : true, \"id\" : 300, \"leaf\" : true, \"cls\" : \"file\"},
                {\"text\" : \"1112\",\"allowEdit\" : true, \"id\" : 300, \"leaf\" : true, \"cls\" : \"file\"},
                {\"text\" : \"1113\",\"allowEdit\" : true, \"id\" : 300, \"leaf\" : true, \"cls\" : \"file\"}
                ]},
                {\"text\" : \"112\",\"allowEdit\" : true, \"id\" : 300, \"leaf\" : true, \"cls\" : \"file\"},
                {\"text\" : \"113\",\"allowEdit\" : true, \"id\" : 300, \"leaf\" : true, \"cls\" : \"file\"}
                ]},
                {\"text\" : \"12\",\"allowEdit\" : true, \"id\" : 300, \"leaf\" : true, \"cls\" : \"file\"},
                {\"text\" : \"13\",\"allowEdit\" : true, \"id\" : 300, \"leaf\" : true, \"cls\" : \"file\"}
                ]},
                {\"text\" : \"2\",\"allowEdit\" : true, \"id\" : 300, \"leaf\" : true, \"cls\" : \"file\"},
                {\"text\" : \"3\",\"allowEdit\" : true, \"id\" : 300, \"leaf\" : true, \"cls\" : \"file\",iconCls:\'node\'}
                ];

                for(var i = 0, len = json.length; i < len; i++) {
                root.appendChild(tree.getLoader().createNode(json[i]));
                }

        var ge = Ext.create(\'Ext.tree.TreeEditor\',tree,{},{
            allowBlank:false,
            blankText:\'Nom du dossier\',
            selectOnFocus:true,
            cancelOnEsc:true,
            completeOnEnter:true,
            ignoreNoChange:true,
            updateEl:true
            });

            /*ge.on(\'beforestartedit\', function(){

            if(!ge.editNode.attributes.allowEdit){
                return false;
            }
                });*/

        tree.setRootNode(root);
        tree.render();
        root.expand(true);

        });
谢谢 :)
已邀请:
该错误是由于未启用加载程序引起的。您可以通过以下方式启用Ext.Loader:
Ext.Loader.setConfig({enabled:true});
您需要在
onReady
方法的开头调用它。
这在ExtJs 4中对我有用。只需在app.js的顶部添加
Ext.Loader.setConfig({enabled:true});
真正的问题是您正在使用ext-debug.js,ext.js 改为使用:ext-all.js或ext-dev.js 阅读有关动态加载的信息 index.html示例:
<html>
  <head>
      <title>Hello Ext</title>
      <link rel=\"stylesheet\" type=\"text/css\" href=\"ext-4/resources/css/ext-all.css\">
      <script type=\"text/javascript\" src=\"ext-4/ext-dev.js\"></script>
      <script type=\"text/javascript\" src=\"app.js\"></script>
  </head>
  <body></body>
</html> 
在该示例中,您不需要启用动态加载,因为动态加载是针对开发环境的。 ext-all.js,ext.js用于部署。 ext-all-debug.js和ext-debug.js用于部署后的调试。 MVC和动态加载在部署中没有用,因为您必须具有sencha cmd(又名Sencha工具)生成的1个文件。
我看着这个,不得不退后一步,因为我是ExtJS新手。我不清楚在OnReady调用之前关于广义放置语句的说法。 Sencha API Docs网站(版本5.0)上的以下内容也显示了此示例,以更好地了解对Ext.Loader类的调用的位置。我认为它有点夸张,带有多个JavaScript标签。
<script type=\"text/javascript\" src=\"ext-core-debug.js\"></script>
<script type=\"text/javascript\">
    Ext.Loader.setConfig({
      enabled: true,
      paths: {
          \'My\': \'my_own_path\'
      }
    });
</script>
<script type=\"text/javascript\">
    Ext.require(...);

    Ext.onReady(function() {
      // application code here
    });
</script>
我对自己的个人代码所做的更改如下添加,并且效果很好。这是非常简单的。
Ext.Loader.setConfig({enabled:true});

Ext.application({
    name                : \'MyApp\',
    appFolder           : \'app\',
    controllers         : [
        \'MyApp.controller.item.Item\'
    ],
    autoCreateViewport  : true

});
如果您在Loader上遇到问题,那么您可能还想复习Ext.require和Ext.exclude类,以了解它们如何交互以加载自定义类。

要回复问题请先登录注册