Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.10.2016, 19:28
Профессор
Отправить личное сообщение для potkin Посмотреть профиль Найти все сообщения от potkin
 
Регистрация: 23.08.2008
Сообщений: 162

combobox: не работает setValue
Юзаю: ExtJS 6.01 и 6.2 GPL
Проблема: не могу combobox-у присвоить значение. Получаю ошибку (в консоле видно): Uncaught TypeError: Cannot read property 'get' of undefined(…)
Часть кода:
{
   xtype: 'combobox',
   allowBlank: true, width: 75,
   valueField: "TableID",
   hiddenName: "TableID",
   displayField: "TableName",
   name: "TableID", itemId: "TableID", id: "TableID"
   },

Гружу данные в стор
var varStoreTablesGrid = Ext.create("store.storeTablesGrid"); varStoreTablesGrid.setData([], false); varStoreTablesGrid.proxy.url = "...";
varStoreTablesGrid.load({ waitMsg: lanLoading });
varStoreTablesGrid.on('load', function () {
   Ext.getCmp("TableID").store = varStoreTablesGrid;
});

Ну и хочу присвоить КомбоБоксу значение:
var combo = Ext.getCmp('TableID');
//combo.setRawValue("2016"); - это работает
combo.setValue(1); //это не работает, получаю ошибку в консоли: Uncaught TypeError: Cannot read property 'get' of undefined(…)


Подскажите в чём может быть проблема?
Ответить с цитированием
  #2 (permalink)  
Старый 09.10.2016, 19:41
Профессор
Отправить личное сообщение для potkin Посмотреть профиль Найти все сообщения от potkin
 
Регистрация: 23.08.2008
Сообщений: 162

Но когда стор локальный в виде переменно, то тогда всё ок.
{
   xtype: 'combobox',
   allowBlank: true, width: 75,
   valueField: "TableID",
   hiddenName: "TableID",
   displayField: "TableName",
   name: "TableID", itemId: "TableID", id: "TableID",


   store: new Ext.data.SimpleStore({
      fields: ["TableID", "TableName"],
      data: Table_values
   }),
},

Где Table_values
var DirHarvestYear_values = [
    [1, 'Запись-1'],
    [2, 'Запись-2'],
    [3, 'Запись-3'],
    [4, 'Запись-4']
];


То ошибок нет, можно применять к КомбоБоксу метод:
Ext.getCmp('TableID').setValue(1);
Ответить с цитированием
  #3 (permalink)  
Старый 10.10.2016, 10:31
Аватар для Infarch
Профессор
Отправить личное сообщение для Infarch Посмотреть профиль Найти все сообщения от Infarch
 
Регистрация: 06.06.2014
Сообщений: 292

Вместо
Ext.getCmp("TableID").store = varStoreTablesGrid;
попробуйте
Ext.getCmp("TableID").setStore( varStoreTablesGrid );
Ответить с цитированием
  #4 (permalink)  
Старый 12.10.2016, 01:28
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

Чем каноничный вариант не устраивает?

Ext.define('MyApp.store.TableGrid', {
    extend: 'Ext.data.Store',
    alias: 'store.TablesGrid',

    fields: ['TableID', 'TableName'],

    proxy: {
        url: '...'
    }
});

...

{
   xtype: 'combobox',
   allowBlank: true,
   width: 75,
   valueField: "TableID",
   hiddenName: "TableID",
   displayField: "TableName",
   name: "TableID",
   itemId: "TableID",
   id: "TableID",

   store: {
      type: 'TablesGrid'
   }
}

...

Ext.getCmp('TableID').getStore().load();
Ответить с цитированием
  #5 (permalink)  
Старый 12.10.2016, 17:24
Профессор
Отправить личное сообщение для potkin Посмотреть профиль Найти все сообщения от potkin
 
Регистрация: 23.08.2008
Сообщений: 162

nohuhu,
А как присвоить значение:
Ext.getCmp('TableID').setValue(1);
Ответить с цитированием
  #6 (permalink)  
Старый 12.10.2016, 21:19
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

Сообщение от potkin Посмотреть сообщение
nohuhu,
А как присвоить значение:
Ext.getCmp('TableID').setValue(1);
Вам начальное значение нужно присвоить? Передайте его в параметрах поля:

{
    xtype: 'combobox',
    valueField: 'TableID',
    value: 1,
    ...
}
Ответить с цитированием
  #7 (permalink)  
Старый 13.10.2016, 10:00
Профессор
Отправить личное сообщение для potkin Посмотреть профиль Найти все сообщения от potkin
 
Регистрация: 23.08.2008
Сообщений: 162

Оно наперёд не известно.
Я его загружаю с сервера.
Ответить с цитированием
  #8 (permalink)  
Старый 19.10.2016, 12:45
Аватар для kolka
Кандидат Javascript-наук
Отправить личное сообщение для kolka Посмотреть профиль Найти все сообщения от kolka
 
Регистрация: 07.06.2010
Сообщений: 146

Может тогда через ViewModel - ?
Как только загрузили сторе, присвойте значение во ViewModel.
Что то типа
//ViewModel
data : {
    defval: 0
}

//combo
bind: {
    value: '{defval}'
}

//controller
this.getViewModel().set({
    defval: 'значение из загруженного стор'
})
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
innerHTML для TR в InternetExplorer не работает? Непонятливый Элементы интерфейса 3 15.10.2012 17:14
JS: работает на сервере, не работает из папки -majestic- Общие вопросы Javascript 2 02.08.2012 14:41
Не работает push! Динамическая вставка TSEH25 ExtJS 5 03.07.2012 13:00
jQyery функция странно работает! Midel Общие вопросы Javascript 4 08.04.2012 13:40
помогите найти ошибку (работает в IE но не работает в Firefox) Len4ik Javascript под браузер 2 11.05.2010 15:41