2016-10-10 7 views
0

Я создал скрипку, чтобы проиллюстрировать то, что я пытаюсь достичь.Как получить значения непосредственно из магазина, отфильтрованного на стороне сервера

https://fiddle.sencha.com/#fiddle/1i8e

На скрипке, есть две сетки и форма.

При выборе строки первой сетки вторая сетка фильтруется (на стороне сервера этот код не был реализован в скрипте).

Что-то вроде:

 storeGrid2.load({ 
      params: { 
       'item': id_item 
      } 
     }); 

При нажатии на кнопку в виде е получить значения из второго магазина сетки (предварительно отфильтрованная).

Это хорошо работает.

Однако мне не нужна вторая сетка в качестве компонента в моем приложении.

Есть ли способ получить значения второго хранилища сетки (без сетки как компонента) после фильтрации?

Реферат: Я хочу, чтобы, когда я выбираю первую строку сетки 1, фильтрует хранилище grid2 (без сетки как компонента), получаю эти значения хранилища (здесь его моя проблема) и добавляем поля в форму.

Редакция:

Я знаю, что мой случай не легко разоблачить.

Предположим, например, приложение для ресторана.

Первая сетка отображает дни недели. Вторая сетка отображает доступные пищевые ингредиенты в тот день. И форма отображает меню.

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

Если это клиент ресторана, когда он выбирает понедельник (на первой сетке) появляется просто меню, а не вторая сетка (клиенту не нужно знать, какие ингредиенты для продуктов доступны в этот день, просто меню).

Это можно сделать, спрятав сетку.

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

Все произошло на уровне ViewModel/Store без существующего слоя представления (вторая сетка).

Когда я использую store.load() без создания экземпляра сетки компонент я получаю следующее сообщение об ошибке: неперехваченным TypeError: Не удается прочитать свойство «нагрузки» неопределенной

+0

Вы когда-нибудь слышали о 'Ext.getStore() '? – Alexander

+0

Да. Я также попробовал Ext.data.StoreManager.get ('my storeId'); Первой проблемой, которую я должен решить, является загрузка магазина без сетки. storeGrid2.load ({params: {'item': id_item}}); по-видимому, для запуска нужен грид-компонент. Мой магазин находится в viewModel. Я хочу получить значения непосредственно из хранилища ширины сетки – josei

+0

Итак, в основном вы хотите отфильтровать второй магазин на основе значения, выбранного вами на первой сетке, без необходимости второй сетки для представления этих данных, правильно? Просто используйте закодированный магазин, чтобы сделать это - http://docs.sencha.com/extjs/6.2.0/classic/Ext.data.ChainedStore.html –

ответ

1

Перемещение функции обработчика в ViewController.

Создайте функцию, называемую, например, onButtonClick.На кнопку конфигурации, добавьте

listeners: { 
    click: 'onButtonClick' 
} 

В onButtonClick функции, получить ссылку на ваш магазин с помощью

var store = this.getViewModel().getStore('mystore1'); 

затем

store.load({ 
    success: function(records) { 
     var name = records[0].get('name'); 
     ... 
    } 
}); 
+0

Спасибо Alexander и Guilherme – josei

+0

Спасибо Francesco. Очевидно, store.load() не работает без сетки, я получаю следующую ошибку: Uncaught TypeError: Не удается прочитать свойство «load» undefined – josei

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