Podaj argument z tpl Sencha
Mój json jest następujący:
({
"status":"TRUE",
"message":"Words",
"data":[
{
"name":"paint",
"author":"snooky",
"word_id":"1",
"category":"Business",
"definitions":[
{
"rating":"Green",
"defintion":"to put color to in something",
"def_id":"1",
"example":null,
"author":"pit",
"is_favourite":"yesStar"
},
{
"rating":"Red",
"defintion":"this is a new definition of word paint.",
"def_id":"42",
"example":null,
"author":"bull",
"is_favourite":"noStar"
}
]
}
]
})
Analizuję tę wartość i pokazuję ją w tpl, jak pokazano poniżej:
{
xtype: 'list',
store: 'words',
height: 140,
layout: 'fit',
scrollable: {
direction: 'vertical',
directionLock: true,
},
margin: '0 0 5px 0',
itemTpl: [
'<div>',
'<tpl for="data">',
'<ul class="parabox">',
'<li><h2><b>{name}</b></h2>',
'<tpl for="definitions">',
'<ul class="para-box-wrapper">',
'<li class="{rating}"><div >',
'<div class="paragraph-def" ><p id = "wordDefinition" >{defintion}</p></div>',
'<span class="authorBox"><i>Author: {author}</i></span>',
'<div id="favourite" class="{is_favourite}" ></div>',
'</div>',
'</li>',
'</ul>',
'</tpl>',
'</li>',
'</ul>',
'</tpl>',
'</div>',
].join(''),
listeners: {
itemtap : function(list, index, target, record, event) {
if (event.target.id=='wordDefinition') {
alert("Rating clicked!");
console.log(event.target.id);
console.dir("Definition--"+record);
//ratingStar();
}
if (event.target.id=='favourite') {
alert('Favourite clicked!');
console.log(event.target.id);
console.dir("Favourite--"+record);
//addToFavourite();
}
}
}
}
Moja konsola jest następująca:
! [konsola] [1]
Jak pokazano na powyższym zdjęciu, chcę uzyskać dostęp do def_id i word_id, gdy użytkownik kliknie odpowiedni tpl, jak pokazano na poniższym obrazku, gdy użytkownik kliknie definicjętj. kibic piłkarski z nadwagą Potrzebuję word_id, a gdy użytkownik kliknie gwiazdkę, muszę uzyskać word_id. Doing record.data.data [0] .definitions [0] .def_id mogę go pobrać, ale chcę, aby był dynamiczny, ponieważ może istnieć definicja 4-5 później.
! [stopa] [2]
Mój sklep:
Ext.define('MyApp.store.wordsmenu',{
extend: 'Ext.data.Store',
config:
{
autoLoad:true,
model: 'MyApp.model.words',
id:'Contacts',
proxy:
{
type: 'ajax',
url: 'json',
reader:
{
rootProperty:''
}
}
}
});
Mój model to:
Ext.define('MyApp.model.words', {
extend: 'Ext.data.Model',
config: {
fields: [
{name: 'status', mapping: 'status'},
{name: 'message', mapping: 'message'},
{name:'data', mapping: 'data'},
{name: 'definitions', mapping: 'definitions.defintion'},
{name: 'ratings', mapping: 'definitions.rating'},
]
}
});
Jestem w stanie pokazać wartość jsona w tpl. Teraz powinienem śledzić kliknięcie określonej definicji i oznaczyć gwiazdką i wysłać jej identyfikator na serwer, ale nie można uzyskać identyfikatora.
Dla odniesienia rekordu możesz sprawdzićtutaj. Jakaś pomoc!