Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Проблемы области видимости или рук (https://javascript.ru/forum/extjs/49257-problemy-oblasti-vidimosti-ili-ruk.html)

13fox 05.08.2014 04:52

Проблемы области видимости или рук
 
Такой вот код:

Excelsior.combo.Quotes = function(config) {
config = config || {};
var tickers=[];//Здесь пытаюсь объявить массив, пох..н что tickers=[]; window.tickers=[]; tickres=newArray;
Ext.Ajax.request({
url:'http://excprofit.ru/getticker',
success:function(response,options){
tickers = JSON.parse(response.responseText);
},
failure:function(response,options)
{
console.log("Error");
}
});
for (var i=0;i<tickers.length;i++)
{
alert(tickers[i].company);// Проверка, все гуд аякс работает, выдает все что надо
};
Ext.applyIf(config,{
store: new Ext.data.ArrayStore({
id: 0
,fields: ['unit','display']
,data: [
[1, tickers[0].company]//Uncaught TypeError: Cannot read property 'company' of undefined - И хоть ты сдохни
,[2, 'tick[0]']
,[3, 'Газпром (GAZP)']
,[4, 'ИнтерРАО (IRAO)']
,[5, 'Лукойл (LKOH)']
,[6, 'МТС (MTSI)']
,[7, 'Роснефть (ROSN)']
,[8, 'НЛМК (NLMK)']
,[9, 'Новатэк (NVTK)']
,[10, 'Ростелеком (RTKM)']
,[11, 'Сбербанк (SBER3)']
,[12, 'Сбербанк-пр (SBERP3)']
,[13, 'Северсталь (CHMF)']
,[14, 'Сургутнефтегаз (CNGS)']
,[15, 'Сургутнефтегаз-пр (CNGSP)']
,[16, 'Татнефть (TATN3)']
,[17, 'Транснефть (TRNFP)']
,[18, 'Уркалий (URKA)']
,[19, 'ФСК ЕЭС (FSKE)']
,[20, 'Холдинг МРСК (HMRK)']
,[21, 'РусГидро (FGGK)']
]
})
,mode: 'local'
,displayField: 'display'
,valueField: 'unit'
});
Excelsior.combo.Quotes.superclass.constructor.call (this,config);
};

Так что люди добрые плз хелп, хотя админиастрация просила не писать что нуб, да, полный, совсем не front-end программист
Предпринимал все что можно - бегал с бубном, бился об стену, пытался создавать новый массив промежуточный через = или slice, смотрел курсы Кантор Ильи - ничего не помогает. Третья ночь без сна. На форум пишу первый раз в жизни, так что простите если что не так.

Aetae 05.08.2014 07:05

Возможно так, хотя с Ext дела не имел.
Excelsior.combo.Quotes = function (config) {
  config = config || {};
  var tickers = []; //Здесь пытаюсь объявить массив, пох..н что tickers=[]; window.tickers=[]; tickres=newArray;
  Ext.Ajax.request({
    url: 'http://excprofit.ru/getticker',
    success: function (response, options) {
      tickers = JSON.parse(response.responseText);
      Ext.applyIf(config, {
        store: new Ext.data.ArrayStore({
          id: 0,
          fields: ['unit', 'display'],
          data: [
            [1, tickers[0].company] //Uncaught TypeError: Cannot read property 'company' of undefined - И хоть ты сдохни
            , [2, 'tick[0]'],
            [3, 'Газпром (GAZP)'],
            [4, 'ИнтерРАО (IRAO)'],
            [5, 'Лукойл (LKOH)'],
            [6, 'МТС (MTSI)'],
            [7, 'Роснефть (ROSN)'],
            [8, 'НЛМК (NLMK)'],
            [9, 'Новатэк (NVTK)'],
            [10, 'Ростелеком (RTKM)'],
            [11, 'Сбербанк (SBER3)'],
            [12, 'Сбербанк-пр (SBERP3)'],
            [13, 'Северсталь (CHMF)'],
            [14, 'Сургутнефтегаз (CNGS)'],
            [15, 'Сургутнефтегаз-пр (CNGSP)'],
            [16, 'Татнефть (TATN3)'],
            [17, 'Транснефть (TRNFP)'],
            [18, 'Уркалий (URKA)'],
            [19, 'ФСК ЕЭС (FSKE)'],
            [20, 'Холдинг МРСК (HMRK)'],
            [21, 'РусГидро (FGGK)']
          ]
        }),
        mode: 'local',
        displayField: 'display',
        valueField: 'unit'
      });
      Excelsior.combo.Quotes.superclass.constructor.call(this, config);
    },
    failure: function (response, options) {
      console.log("Error");
    }
  });

};

13fox 06.08.2014 07:11

Спасибо конечно!!!. Вы чисто поржать написали?, тут логики нуль....

Makarov 06.08.2014 10:03

0. Код надо форматировать иначе его никто читать не будет
1. Вас не смущает что Вы пытаетесь обратиться к нулевому индексу не массива а обычного json объекта, в котором у элементов числового индекса в общем случае просто нету?
2. Если же в объекте все есть, покажите данные отладчика, response, responseText, tickers

siber-biber 06.08.2014 18:08

Цитата:

Сообщение от 13fox (Сообщение 324542)
Спасибо конечно!!!. Вы чисто поржать написали?, тут логики нуль....

вы чисто поржать вопрос задали? чтоб ответы не читать?
человек вам правильно подсказывает Ext.Ajax.request - асинхронный метод и работу с массивом tickers надо реализовывать в callback определенном в конфиге success.
а то что конструктор у вас в таком виде работать не будет ..дак это у вас такой супер план асинхронный ajax реквест делать в конструкторе.

оберните массив в динамически генерируемый класс и этот класс добавьте в requires или mixins для вашего Quotes.


Часовой пояс GMT +3, время: 11:22.