Невозможно использовать метод setTitle при использовании строки, объединенной с данными хранилища данных - PullRequest
0 голосов
/ 14 сентября 2011

У меня есть следующий код, прикрепленный в качестве обработчика к кнопке:

myapp.stores.vehicleInfo.load();
myapp.toolbars.vehicleInfoToolbar.setTitle('Image 1 of ');

, который в моем определенном пространстве имен загружает хранилище, а затем устанавливает заголовок панели инструментов - это работает .

Этот код не работает:

myapp.stores.vehicleInfo.load();
myapp.toolbars.vehicleInfoToolbar.setTitle('Image 1 of' + myapp.stores.vehicleInfo.data.items[0].data.imageTotal);

выдаёт ошибку: «не может прочитать свойство« data »из undefined»

Но когда я нажимаю кнопкуво второй раз он устанавливает заголовок панели инструментов, как и ожидалось, например, изображение 1 из 10.

Что здесь происходит?Как мне это решить?Я попытался использовать метод settimeout на тот случай, если метод setTitle вызывался слишком рано, прежде чем загрузка хранилища была закончена.Однако это не решило проблему.

Спасибо.

Ответы [ 2 ]

1 голос
/ 14 сентября 2011

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

myapp.stores.vehicleInfo.load({
                callback:function(r, options, success) {
                    myapp.toolbars.vehicleInfoToolbar.setTitle('Image 1 of' + myapp.stores.vehicleInfo.data.items[0].data.imageTotal);
                }
            });
1 голос
/ 14 сентября 2011

Магазин еще не загружен, когда вызывается setTitle. Вы должны поместить вызов setTitle в load обратный вызов:

myapp.stores.vehicleInfo.load({callback : function(records){
  myapp.toolbars.vehicleInfoToolbar.setTitle('Image 1 of' + records[0].data.imageTotal);
}});
...