Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.03.2016, 10:54
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Создание связей между хранилищами в памяти
Я создал два хранилища. Указал связь один-ко-многим (hasMany: "Detail"). Указал что они связываются через поле "pid" хранилища "detailStore" ({ name: "pid", reference: "Master" }).

Вопрос, где прописать связь двух существующих хранилищ?

Вот код (песочница https://fiddle.sencha.com/#fiddle/1735):

var proxy = {
            type: "memory",
            reader: {
                type: "json"
            }
        };
        
        Ext.define("Master", {
            extend: "Ext.data.Model",
            fields: ["id", "title"],
            hasMany: "Detail"
        });
        
        Ext.define("Detail", {
            extend: "Ext.data.Model",
            fields: ["id", { name: "pid", reference: "Master" }, "title"]
        });
        
        var masterStore = Ext.create("Ext.data.Store", {
            proxy: proxy,
            model: "Master",
            data: [
                { id: 1, title: "Группа 1" },
                { id: 2, title: "Группа 2" },
                { id: 3, title: "Группа 3" }
            ]
        });
        
        var detailStore = Ext.create("Ext.data.Store", {
            proxy: proxy,
            model: "Detail",
            data: [
                { id: 1, pid: 1, title: "Запись 1" },
                { id: 2, pid: 1, title: "Запись 2" },
                { id: 3, pid: 1, title: "Запись 3" },
                { id: 4, pid: 2, title: "Запись 4" },
                { id: 5, pid: 2, title: "Запись 5" },
                { id: 6, pid: 2, title: "Запись 6" }
            ]
        });
        
        console.log(masterStore.getAt(1).details().getCount()); // Выдает нуль, хотя записей там три на каждую группу.
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.

Последний раз редактировалось khusamov, 13.03.2016 в 14:34.
Ответить с цитированием
  #2 (permalink)  
Старый 14.03.2016, 14:48
Аватар для Infarch
Профессор
Отправить личное сообщение для Infarch Посмотреть профиль Найти все сообщения от Infarch
 
Регистрация: 06.06.2014
Сообщений: 292

Логично, вы же связали модели, а не сторы. Мне кажется тут надо в сторону сесии смотреть, но я в ней не силен (
Ответить с цитированием
  #3 (permalink)  
Старый 14.03.2016, 15:10
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Это об этом речь?
http://docs.sencha.com/extjs/6.0/6.0...t.data.Session
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #4 (permalink)  
Старый 14.03.2016, 15:11
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

ну да, хочу сторы связать. Чтобы в ОЗУ образовалась некоторое подобие базы данных. А то, ощущение, что все эти модели направлены лишь на отображение баз данных сервера на клиенте. А мне как-то нужно создать модель, которая будет только на клиенте.
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #5 (permalink)  
Старый 14.03.2016, 17:30
Аватар для kolka
Кандидат Javascript-наук
Отправить личное сообщение для kolka Посмотреть профиль Найти все сообщения от kolka
 
Регистрация: 07.06.2010
Сообщений: 146

Спрошу здесь...
Не скажу что проблема общая. У меня скорее проблема с понимаем создания связей.

Смотрю на этот пример и не понимаю почему во View в самом низу bind так описывают:
bind: '{customerGrid.selection.orders}',

откуда orders и почему именно orders.

Друзья, поясните на пальцах как правильно создать связь один-ко-многим.
Читал документацию, путаюсь.
Ответить с цитированием
  #6 (permalink)  
Старый 14.03.2016, 18:32
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Я так понимаю что customerGrid.selection это экземпляр Ext.data.Model, а функция customerGrid.selection.orders() выдает на выходе экземпляр хранилища. А при помощи bind, если не указано свойство, в гриде происходит связка с опцией grid.store. То есть, вместо

bind: '{customerGrid.selection.orders}',


можно записать

bind: {
        store: '{customerGrid.selection.orders}'
},


.orders() появляется похоже, если в модели прописать

reference: {
        parent: 'Customer'
}


Правда я не знал что такое возможно. Ибо это прописано в модели KitchenSink.model.Order. А функция добавляется в модель KitchenSink.model.Customer.

В общем у них такая навороченная кухня и толкового описания даже на англ нету.
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #7 (permalink)  
Старый 15.03.2016, 11:39
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

ну так что, никто не знает как сделать связи между хранилищами? Сессии не помогли

задал на оф. сайте
может там помогут
https://www.sencha.com/forum/showthr...92#post1130292
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.

Последний раз редактировалось khusamov, 15.03.2016 в 11:59.
Ответить с цитированием
  #8 (permalink)  
Старый 15.03.2016, 14:15
Аватар для Infarch
Профессор
Отправить личное сообщение для Infarch Посмотреть профиль Найти все сообщения от Infarch
 
Регистрация: 06.06.2014
Сообщений: 292

А покажите если можно в фидле, как вы использовали сессию и как она не помогла. Я тоже пытался в свое время, может ваш пример меня вдохновит на новую попытку )
Ответить с цитированием
  #9 (permalink)  
Старый 15.03.2016, 14:17
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Вот так:
var session = Ext.create("Ext.data.Session");
...
var masterStore = Ext.create("Ext.data.Store", {
      ...
      session: session,
      ...
}

И это дело в обоих сторе прописал.
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #10 (permalink)  
Старый 15.03.2016, 15:52
Аватар для Infarch
Профессор
Отправить личное сообщение для Infarch Посмотреть профиль Найти все сообщения от Infarch
 
Регистрация: 06.06.2014
Сообщений: 292

Так и я пробовал. Ну тогда надежда на офф. форум.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Утечки памяти: как сделать ? Draeden Events/DOM/Window 10 30.08.2009 18:16