2012-02-07 4 views
0

Я использую extjs и загружаю json-файл с загрузчиком магазина.Как я могу загрузить данные из json-файла

Я хочу загрузить файл json. Он будет содержать «totalRecords», и я хочу поместить это в var. Например, var Records. Таким образом, я могу отображать его на некоторых позициях моего приложения и использовать его для оповещений.

благодаря вашей помощи я знаю, есть это:

total = Ext.create('Ext.data.Store', { 
model: 'step1', 
proxy: { 
     type: 'ajax', 
     url: 'testevents.json', 
     reader: { 
      type: 'json', 
      root: 'slaevents' 
     } 
}, 
listeners: { 
    load: function() { 
     records = total.getRange() 
     test = records[0].get('event') 
     alert('1 =' +test) 
    } 
}, 
autoLoad:true 
}); 
alert('2 =' +test) 

Это покажет предупреждение с "1 = другой". Это верно. И «2 = unifined». Это не правильно. Как я могу использовать тест за пределами этого магазина?

Благодаря

+0

Я всегда пользуюсь погрузчиком. Таким образом, он будет загружаться в сетку. Также я попытался сделать счет, но всегда возвращал 0. Я просто не знаю, как это сделать. –

+0

Я использую google, но если вы не знаете, что ищете, это сложно. Я редактирую код с кодом –

ответ

2

Осознайте, что ваш магазин не загружается мгновенно, так что не имеет ничего в нем, когда вы назначаете его переменной сразу же после этого в JS. Вам необходимо прослушать загрузку хранилища, а затем назначить его или назначить в обратном вызове. Например, это работает нормально:

// get the countries 
var countries = Ext.create('Ext.data.Store', { 
    fields: ['id','name'], 
    proxy: { 
     type: 'ajax', 
     url: '../getCountries', 
     reader: 'json' 
    }, 
    listeners: { 
     load: function() { 
      records = countries.getRange() 
      alert(records[0].get('name')) 
     } 
    } 
}); 

Это предупреждение «Аргентина».

records становится массив из Ext.data.Model объектов, каждый из которых имеет все методы, которые Ext.data.Model имеет. Это покрывает here в API.

+0

, но я где-то читал, что не могу использовать запись [0] за пределами этого магазина? –

+0

Это будет запись ** s ** [0]. Я не уверен, что вы читаете, дайте этому вихрь в вашем коде, он отлично работает для меня. Обратите внимание, что я ** не ** делаю «** var ** records = ...», что сделало бы «запись» локальной переменной, вместо этого она является глобальной переменной, поэтому она доступна в любом месте вашего кода. Конечно, вы также должны иметь в виду ту часть, что я сказал в начале о том, что магазин не загружается мгновенно. Таким образом, вы не сможете вызывать записи [0] .get ('name'), когда ваши js инициализируются, потому что они пусты, пока не вернется ajax. Но вы можете поместить его в другие функции, которые вызываются после возвращения ajax. – Geronimo

+0

Я обновил свой код, как указано выше –

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

  • Нет связанных вопросов^_^