Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.04.2011, 17:38
Интересующийся
Отправить личное сообщение для pauluss Посмотреть профиль Найти все сообщения от pauluss
 
Регистрация: 23.03.2010
Сообщений: 22

ExtJS4 Обход store
День добрый. Подвис я со store в ExtJS4. Наваял такой код

Ext.regModel('Columns', {
    fields: ['Name', 'Description', 'RefObjectControllerName'],
    belongsTo: 'Configuration'
});
Ext.regModel('Groups', {
    fields: ['Name', 'Order', 'OrderDirection'],
    belongsTo: 'Configuration'
});
Ext.regModel('Configuration', {
        fields:
        [   
            {name:'GridName',type:'string'},
            {name:'Columns', type:'Columns'},
            {name:'Groups', type:'Groups'}
        ],
    hasMany:
    [
        { model: 'Groups', name: 'groups' },
        { model: 'Columns', name: 'columns' }
    ]
});


var store = new Ext.data.Store(
{
    model: 'Configuration',
    proxy: 
    {
        type: 'ajax',
        url: '/Home/GetConfiguration'
    }
});

store.load();


ExtJS4 юзаю в связке с ASP.NET MVC 3, запрос делает, результат возвращает, вроде всё хорошо. Но не могу тупо обойти store.
Накурился мануалов.
(Тут) пишут что надо так:

store.load({
    callback: function() {
        //the user that was loaded
        var user = store.first();

        //iterate over the Orders for each User
        user.columns().each(function(col) 
        {
              alert('Ураааа!!!! Бегает по колонкам!!! Заработала зараза!!! ');
        }
    }
});

на store.first() чесно получает первый элемент, но дальше всё плохо - этот элемент пустой. То есть store.first().columns().data.length почему-то равно нулю.
Однако когда ковыряюсь в stor-е Firebug-ом, то нахожу всё, что было отправлено с сервера (массив, находящийся store.first().data.Columns содержит всё, что нужно)

Думал может связки в store неправильно заюзал, перепробовал всё, что смог придумать. Как эту заразу победить, кто знает?
Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 22.04.2011, 12:21
VKS VKS вне форума
Профессор
Отправить личное сообщение для VKS Посмотреть профиль Найти все сообщения от VKS
 
Регистрация: 24.09.2010
Сообщений: 178

store.load({
    callback: function() {
        store.each(function(rec) { console.log(rec); });
    }
});


Может все же так, если смотреть на документацию
Ответить с цитированием
  #3 (permalink)  
Старый 22.04.2011, 13:44
Интересующийся
Отправить личное сообщение для pauluss Посмотреть профиль Найти все сообщения от pauluss
 
Регистрация: 23.03.2010
Сообщений: 22

Это тоже самое только в моем случае, корневой элемент выгребается не через store.each(), а через store.first()
Попробовал, как у тебя (мало ли), тот же результат.
Корневой элемент я получаю. Но у него должно быть две коллекции Columns и Groups, которые по идее должны возвращаться методами columns() и groups(). Сами методы создаются, но вот побегать по коллекциям, которые они возвращают как раз и не получается, потому что коллекции пустые.
Ответить с цитированием
  #4 (permalink)  
Старый 22.04.2011, 14:13
VKS VKS вне форума
Профессор
Отправить личное сообщение для VKS Посмотреть профиль Найти все сообщения от VKS
 
Регистрация: 24.09.2010
Сообщений: 178

А указанный пример по ссылке пашет, проверяли?
Ответить с цитированием
  #5 (permalink)  
Старый 14.01.2013, 14:25
Новичок на форуме
Отправить личное сообщение для spendlively Посмотреть профиль Найти все сообщения от spendlively
 
Регистрация: 11.01.2013
Сообщений: 2

Пeревод доков про Store и Model
http://phpshnik.ru/ext-js-4/rukovods...nnymi-ext-js-4
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
store on update avaVusal ExtJS 1 11.04.2011 15:30
ExtJs 4 проблема с tree или с store mavovan ExtJS 1 25.03.2011 15:14
Обход массива в строгом порядке nibble Общие вопросы Javascript 35 03.12.2010 13:38
Получить элемент из store DenQ ExtJS 1 07.11.2010 16:51
Как только подключаю store таблица Grid - не рисуется.(? JSTalker ExtJS 2 27.06.2010 19:45