Ext.loader не включен Отсутствует требуется? - PullRequest
19 голосов
/ 19 апреля 2011

У меня есть некоторые проблемы с библиотекой Extjs4. Я хочу использовать компонент treeEditor.

Ошибка Firebug:

Ошибка: необработанное исключение: Ext.Loader не включен, поэтому зависимости не могут быть разрешены динамически. Отсутствует обязательный класс: Ext.tree.TreeNode

Мой код:

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);

        });

Спасибо:)

Ответы [ 4 ]

50 голосов
/ 19 апреля 2011

Ошибка из-за не включения Loader. Вы можете включить Ext.Loader:

Ext.Loader.setConfig({enabled:true});

Вам нужно вызвать это в начале onReady метода.

2 голосов
/ 02 сентября 2012

Это сработало для меня в ExtJs 4. Просто добавили Ext.Loader.setConfig({enabled:true}); в начало app.js.

1 голос
/ 28 августа 2014

Я посмотрел на это и мне пришлось отступить на секунду, поскольку я новичок в 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, чтобы понять, как они взаимодействуют для загрузки ваших пользовательских классов.

1 голос
/ 13 ноября 2012

Настоящая проблема в том, что вы используете 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 и динамическая загрузка бесполезны при развертывании, потому что у вас должен быть 1 файл, сгенерированный sencha cmd (он же Sencha Tools).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...