Nano Hash - криптовалюты, майнинг, программирование

Синхронная загрузка MyApp.store.TreeStructures; рассмотрите возможность добавления Ext.require('MyApp.store.TreeStructures') выше Ext.onReady

Ниже вы увидите, что я получаю исключение JavaScript с представлением MVC, которое я создал в приложении Sencha ExtJS MVC. У меня есть другое представление MVC, которое расширяет «Ext.tree.Panel», который читает простой объект JSON вместо извлечения данных через прокси-сервер Ext.Direct и серверный стек .NET, но единственное, что отличается, — это реализация прокси и конечно, наша логика контроллера MVC. В статической (JSON) реализации наш прокси определяется в модели. В динамической (Ext.Direct) реализации наш прокси определяется в магазине. Файл JavaScript TreeStructures.js (store) запрашивается бесконечное количество раз, пока браузер не выйдет из строя. См. ниже для этого исключения.

Я очень сомневаюсь, что это проблема Ext.Direct, потому что другие магазины отлично работают с этой архитектурой. Я вижу исключение [Ext.Loader], но не понимаю, почему оно повторяется с каждым новым запросом TreeStructures.js. Или где реализовать что требуется. Насколько я понимаю, app.js определяет контроллеры. Затем контроллер определяет модели, которые он сохраняет. И Viewport определяет и создает экземпляры других представлений MVC. Мои «другие взгляды» - это представления дерева. И представление реализует хранилище.

Кроме того, команда Sencha Cmd «сборка приложения sencha» не работает. Обычно мое приложение компилируется без каких-либо проблем, поэтому в хранилище или конфигурации MVC определенно не хватает чего-то, что необходимо для этого динамического дерева.

Исключение в консоли JavaScript:

[Ext.Loader] Synchronously loading 'MyApp.store.TreeStructures'; consider adding Ext.require('MyApp.store.TreeStructures') above Ext.onReady

Браузер аварийно завершает работу с этим исключением JavaScript:

Примечание. Файл JavaScript TreeStructures.js (store) запрашивается бесконечное количество раз, пока в браузере не произойдет сбой со следующим:

Uncaught RangeError: Maximum call stack size exceeded

Ошибки Sencha Cmd (после вызова команды «sencha app build»):

[ERR] failed to find meta class definition for name MyApp.store.TreeStructures
[ERR] def was null
[ERR] C2008: Requirement had no matching files <MyApp.store.TreeStructures> -- unknown-file:-1

Реализация статического дерева (считывает объект JSON для получения данных):

Ext.define('MyApp.store.Categories', {
    extend : 'Ext.data.TreeStore',
    model : 'MyApp.model.Category',
    autoLoad : true,
    root : {
        text : 'All',
        alias : '',
        expanded : true
    }
});

Ext.define('MyApp.model.Category', {
    extend: 'Ext.data.Model',
    fields: [
        { name: 'alias', type: 'auto' },
        { name: 'text', type: 'auto' }
    ],

    proxy: {
        type: 'ajax',
        url: 'data/categories.json'
    }
});

Ext.define('MyApp.controller.ConceptTreeReadonly', {
    extend : 'Ext.app.Controller',
    stores: ['Categories'],
    models: ['Category'],
    refs : [{
        ref: 'categories',
        selector: 'view-west'
    }],
});

Реализация динамического дерева (использует стек на стороне сервера для получения данных):

Ext.create('MyApp.store.TreeStructures', {
    extend: 'Ext.data.TreeStore',
    model : 'MyApp.model.TreeStructure',
    proxy: {
        type: 'direct',
        directFn: Concept_Tree_Structure.read,
        reader: {
            root: 'data'
        }
    },
    root: {
        text: 'Concept Tree',
        id: 'root',
        expanded: false
        //children: []
    },
    autoLoad: false
});

Ext.define('MyApp.model.TreeStructure', {
    extend: 'Ext.data.Model',
    xtype: 'model-tree-structure',

    fields: [
        { name: 'text' }, //  string                    
        { name: 'id' }, // Int32    type: 'int'
        { name: 'expanded' }, // boolean                   
        { name: 'leaf' }, // boolean       
        { name: 'children' } // List<TreeStructure>            
    ]
});

Ext.define('MyApp.controller.ConceptTreeController', {
    extend : 'Ext.app.Controller',

    stores: ['TreeStructures', 'Concepts'],
    models: ['TreeStructure', 'Concept'],

    refs : [{
        ref: 'concept-tree',
        selector: 'view-concept-tree'
    }],
    init : function() {

        this.getConceptsStore().load({
            params: {
                start: 0, 
                limit: 10,
                foo: 'bar'
            }
        });

        this.getTreeStructuresStore().load({
            params: {
                start: 0,
                limit: 10,
                foo: 'bar'
            }
        });
    }
});

  • Похоже, это потому, что вы делаете Ext.create вместо Ext.define в своем магазине TreeStructures. 06.08.2013
  • Не стесняйтесь сделать это ответом. Ты спасатель жизни. Я думаю, мне просто нужно немного поспать! 06.08.2013
  • Для справки: requirejs — это еще одна библиотека, специально предназначенная для динамического включения файлов. Это не имеет ничего общего с ExtJS, кроме базовых концепций. 06.08.2013

Ответы:


1

Изменить Ext.create('MyApp.store.TreeStructures'...

В Ext.define('MyApp.store.TreeStructures'...

05.08.2013
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..