Как указать название модели в магазине extjs 4? - PullRequest
2 голосов
/ 15 февраля 2012

Я разочарован при работе с магазином и моделью extjs 4. Я получаю ошибку Store defined with no model. You may have mistyped the model name., несмотря на то, что я указал название модели внутри магазина.

Вот мой код:

Ext.define('iWork.store.CandidateDistribution', {
    extend: 'Ext.data.TreeStore',
    autoLoad: true,
    requires: 'iWork.model.Location',
    model: 'iWork.model.Location',

    proxy: {
        type: 'ajax',
        url: 'data/CandidateDistribution/CandidateCount.json',
        reader: {
            type: 'pentahoReader',
            root: 'resultset'
        }
    },
    listeners: {
        load: function(treeStore, currentNode, records, success, options) {
            console.log('in load listener');
            console.log(records);
        },
        beforeappend: function(currentNode, newNode, options) {
            console.log('in beforeAppend listener');

        },
        add: function(store, records, options) {
            console.log('in add listener');
        },
        beforeinsert: function(currentNode, newNode, option) {
            console.log('in beforeInsert listener');
        }
    }
});

Я пытался изменить model: 'iWork.model.Location', на model: 'Location', model: "Location" и model: "iWork.model.Location", но все равно он не работает.

Код в файле модели выглядит следующим образом:

Ext.define('iWork.model.Location', {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'name', type: 'string'},
        {name: 'candidateCount', type: 'string'}
    ]
});

и древовидный код, который ссылается на этот магазин, выглядит следующим образом:

Ext.define('iWork.view.CandidateDistribution', {
    extend: 'Ext.window.Window',
    alias: 'widget.candidateDistribution',
    require: ['iWork.store.CandidateDistribution'],
    layout: {
        type: 'hbox',
        align: 'stretch'
    },
    autoShow: true,

    initComponent: function() {
        this.items = [
            {
                xtype: 'treepanel',
                title: 'Location wise customer Distribution',
                store: 'iWork.store.CandidateDistribution',
                width: '25%',
                height: '100%',
                rootVisible: false
            }
        ];
        this.callParent(arguments);
    }
});

Я пытался изменить store: 'iWork.store.CandidateDistribution' на store: 'CandidateDistribution', но также не работает.

Если я изменю store: 'iWork.store.CandidateDistribution' на store: CandidateDistribution, я получу следующую ошибку в ext-debug.js (line 8002)

me.store is undefined
[Break On This Error] }, 

Я не могу найти, где я допустил ошибку. Пожалуйста, дайте мне знать, если я пропустил какую-либо другую конфигурацию или что я сделал неправильно.

Спасибо !!


РЕДАКТИРОВАТЬ 1: файл index.html моего приложения выглядит следующим образом:

<html>
    <head>
        <title>iWork Dashboards</title>
        <link rel="stylesheet" type="text/css" href="../extjs/resources/css/ext-all.css" />
        <script type="text/javascript" src="../extjs/ext-debug.js"></script>
    <script type="text/javascript" src="app/app.js"></script>
    <script type="text/javascript" src="app/PentahoReader.js"></script>
    </head>
    <body>
    </body>
</html>

1 Ответ

4 голосов
/ 15 февраля 2012

Это ошибка в NodeStore, которая используется Ext.tree.View.Вы всегда будете видеть это, когда будете использовать древовидную панель.

Если вы прервете строку, генерирующую предупреждение, и посмотрите на стек, вы увидите, что он находится в конструкторе AbstractStore, который был вызванконструктор NodeStore, который в свою очередь вызывается initComponent Tree View.

...