2012-04-15 4 views
1

Я пытаюсь запустить combobox, но когда я добавляю его в свою форму, форма не отображается.combobox не работает в среде extjs 4 mvc?

Вот мой код формы:

Ext.define("Screener.view.Pharmacyform", { 

      xtype: 'pharmacyform', 
    extend: 'Ext.form.Panel', 
    requires: ['Ext.tab.Panel','Ext.form.FieldSet'], 

    config:{ 
     styleHtmlContent: true, 
      xtype:'orderform', 
      autoscroll: true, 


      items:[{ 
        xtype: 'fieldset', 
        title: 'Pharmacy Order', 

     items: [ 
      { 
       xtype: 'textfield', 
       name : 'name', 
       label: 'Name' 
      },{ 
       {xtype: 'combo', 
    fieldLabel: 'Combobox', 
    name:'drugdrug', 
    id:'combodrug', 

    store: Ext.create('Screener.store.Drugs',{ 
          storeId: 'drugstore' 

         }), 
         displayField: 'drugname', 
         valueField: 'drugname', 
         queryMode: 'local', 
         triggerAction: 'all' 

     } 


       ] 
    }] 

    } 

    }); 

код аптекой:

/* 
* This store loads the drugs from file 'drugs.json' 
* Note: there is no writer attached, so changes will 
* only occur in local cache 
*/ 

    Ext.define('Screener.store.Drugs', { 
     extend: 'Ext.data.Store', 
    storeId: 'drugStore', 

     config: { 
      model: 'Screener.model.Drug', 
      proxy: { 
       type: 'ajax', 
       url : 'drugs.json', 
       reader: 'json',  
       }, 
      autoLoad: true 

     } 
    }); 

Я новичок в ExtJS, скажите, пожалуйста, как получить его работу

ответ

0

You не указывайте так много. Чтобы помочь вам, мне нужен рабочий образец и версия sencha, которую вы используете.

Что я вижу по внешнему виду, у вас есть два магазина: первый из них определяется «inline» в определении combobox. Этот магазин не является потомком Ext.store.Store, поэтому он не будет работать.

Второй, кажется, почти правильный, но он не используется, поскольку вы создаете первый экземпляр.

Попробуйте изменить определение вашего магазина в целях:

... 
fieldLabel: 'Combobox', 
    name:'drugdrug', 
    id:'combodrug', 

    store: 'drugStore' 
... 

Кроме того, вы не говорите, если вы получаете ошибки в консоли.

0

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

Код магазина в контроллере этой точки зрения (.stores []), и загрузить контроллер перед видом

Ссылка магазин в application.stores []

Set магазин по ссылке, а не по имени, например:

{ 
xtype:'combobox', 
store: new Ext.data.Store({model:'somemodel'}), 
... 
} 

последний вариант, вероятно, лучше, так как комбо часто работают лучше с их собственный магазин. Например, есть ошибка в 4.1RC2, где вы не можете использовать пейджинг с общим хранилищем. В этом случае убедитесь, что вы поместили прокси-сервер в модель, чтобы не было дублирования кода между магазинами с той же моделью.

+0

ок я попытался это, но по-прежнему сталкиваются с той же проблемой, я создал три кнопки на домашней панели, нажав на одну из них открывается форма, но ее не происходит, когда я добавляю поле со списком, но другие кнопки работают нормально, когда я пытаюсь добавить Ext.form.field.ComboBox в require [], приложение не загружается. любая проблема с классом combobox в api ?? –

+0

использование firefox. установить firebug. есть ли ошибки в firebug? спасибо –

0

Эй человек, вы должны добавить одно заявление

renderTo: Ext.getBody()

Смежные вопросы