2016-10-11 3 views
1

В нашем приложении мы имеем много имени/значение магазинов, и они создаются во время загрузки и поместить в JSONStore так:Попытки использовать JSONStore в комбо

Ext.create("Ext.data.JsonStore", { 
    data: data, 
    model: 'EM.model.controlUnit.CodeList', 
    storeId: "cl_" + tableId, 
    sorters: [{ 
     sorterFn: aSorterFunction 
    }], 
}); 

Модели довольно проста и выглядит следующим образом:

Ext.define('EM.model.controlUnit.CodeList', { 
    extend: 'Ext.data.Model', 

    fields: [{ 
     name: 'value', type: 'int' 
    }, { 
     name: 'label', type: 'string' 
    }, { 
     name: 'description', type: 'string' 
    }] 
}); 

Я думал, что магазины были довольно взаимозаменяемы, так что я решил использовать магазин в комбо (Существует никаких специальных комбо-магазин, так что я не думал, что JSONStore должно быть так хорошо, как SimpleStore). Я получаю магазин как так:

var msDataStore = Ext.getStore("cl_t_cl_maritalstatus"); 

И использовать магазин как так:

{ 
    xtype: 'combo', 
    fieldLabel: 'Marital Status', 
    displayField: "label", 
    valueField: "value", 
    store: msDataStore 
} 

Комбо заполняется значениями из магазина, когда я запустить приложение, однако, когда я сую вниз поле со списком, отбрасывается эта ошибка:

доб-отладочные-W-comments.js: 9951 Uncaught Ext.data.proxy.Server.buildUrl(): Вы используете ServerProxy но не входит в комплект это остроумие h a url.

Я не хочу прокси-сервера сервера. Это простые локально хранимые коллекции значений имен.

  • Может ли JSONStores использоваться с комбо?
  • Если нет. Каков наилучший способ конвертировать JSONStore в нечто приемлемое для комбо. Я могу нарезать, изменить, реструктурировать объект магазина. Но я просто хочу знать, есть ли что-то более простое, что я могу сделать, прежде чем отправиться в какое-то длинное и бессмысленное путешествие.

ответ

2

JsonStore без URL является вполне приемлемым, но вы должны убедиться, что комбо не запускает операцию загрузки при нажатии на выпадающем списке. Это делается путем добавления в определение комбо вариант конфигурации queryMode:'local':

{ 
    xtype: 'combo', 
    fieldLabel: 'Marital Status', 
    displayField: "label", 
    valueField: "value", 
    queryMode: 'local', 
    store: msDataStore 
} 
+0

спасибо вам большое! –

3

Эта проблема связана с свойством «прокси». По умолчанию для JsonStore используется «ajax»;

 
proxy: { 
    type : 'ajax', 
    reader: 'json', 
    writer: 'json' 
} 

Вы должны переопределить «память»;

 
proxy: { 
    type: 'memory' 
} 

Ваш последний магазин;

Ext.create("Ext.data.JsonStore", { 
    data: data, 
    model: 'EM.model.controlUnit.CodeList', 
    storeId: "cl_" + tableId, 
    proxy: { 
     type: 'memory' 
    } 
    sorters: [{ 
     sorterFn: aSorterFunction 
    }], 
}); 
Смежные вопросы