Как получить доступ к магазину в сенча тач

Я пытаюсь получить значение магазина следующим образом:

 itemtap : function(list, index, target, record) {

      Ext.getStore("nameStore").load();
      console.dir("TEST->"+record.get('id'));
      console.dir("TEST->"+record.get('address'));

}

Здесь я не могу получить идентификатор, когда itemtap. и я также пробую это:

  var store= Ext.getStore('nameStore');
  console.dir("TEST->"+store.get('id'));
  console.dir("TEST->"+store.get('address'));

Но не смог получить данные. Почему это?

и В чем разница между этими двумя типами доступа к значениям хранилища?

Я добавляю onclick внутри div, itemtap работает нормально, но в Iphone он не работает? почему это? Есть ли какая-либо альтернатива в сенче, работающей как на Android Iphone, так и на других. Как получить значение в itemptap, отображаемое в div, которое отображается из магазина.

Отредактировано:

 itemtap :function(list, index, target, record) {
console.log("Clicked---"+record.get('cat_id'));
}

На самом деле, я не получаю код выше.

Я пробую это и получаю значение

console.log("Clicked--"+record.data.data[index].cat_id);

Всегда получать первое значение, потому что значение индекса всегда равно 0, каждая категория прослушивается. Итак, здесь я хочу получить индекс категории прослушивания.

Отлично работает, если я сделаю следующее:

{    
          xtype: 'list', 
          itemId: 'catList',
          scrollable: false,

    data: [
    { name: 'A', cat_id: 1},
    { name: 'B', cat_id: 2},
    { name: 'C', cat_id: 3},
    { name: 'D', cat_id: 4},
    { name: 'E', cat_id: 5},


    ],
    loadingText: "Loading Words...",
    emptyText: '<div>{message}</div>',
    autoLoad:true,
    itemTpl:[
    '<tpl for=".">',
          '<span >{name}</span> ',             
      '</tpl>',
    ] 
  },

person Community    schedule 13.08.2013    source источник


Ответы (1)


Почему вы «перезагружаете» магазин при обратном вызове itemTap? Он должен быть уже загружен, и нет необходимости снова загружать().

Даже если вы хотите обновить хранилище, вам следует дождаться завершения load(), прежде чем выполнять record.get(). Помните, что load() является асинхронным.

Второй блок никогда не будет работать, потому что get() — это метод для записи, вы повторно выполняете его в хранилище.

itemtap : function(list, index, target, record) {
      console.dir("TEST->" + record.get('id'));
      console.dir("TEST->" + record.get('address'));
}
person Nico Grunfeld    schedule 13.08.2013
comment
я тоже пробую это, console.log(Clicked--+record.get('id')); но не смог получить значение. Поэтому я пытаюсь выше. - person ; 13.08.2013
comment
Почему я не получаю точное значение от record.get(index)); значение. Здесь при каждом нажатии я получаю 0. - person ; 13.08.2013
comment
index — числовой индекс записи в хранилище. Вы можете store.getAt(index) получить конкретную запись. index=0 означает, что пользователь нажимает на элемент списка, который сохраняется как первая запись в магазине. record.get(field) предназначен для чтения значения определенного поля записи. - person Nico Grunfeld; 13.08.2013
comment
На самом деле, я сделал это, но не смог получить правильное значение. см. мой отредактированный вопрос. - person ; 14.08.2013