here my complete code modified now the query search works to filter the city name but still have to make either the city name or airport name selectable… 
var TMPL=Template7.compile('\
<li>\
<label class="item-radio item-content">\
<input type="radio" name="{{inputName}}" value="{{value}} {{#if selected}}checked="checked"{{/if}}">\
<i class="icon icon-radio"></i>\
<div class="item-inner">\
<div class="item-title"><strong>{{name}}, {{countryName}}</strong></div>\
</div>\
</label>\
</li>\
<ul>\
{{#airports}}\
<li>\
<label class="item-radio item-content">\
<input type="radio" name="{{../inputName}}" value="{{value}} {{#if selected}}checked="checked"{{/if}}">\
<i class="icon icon-radio"></i>\
<div class="item-inner">\
<div class="item-title">{{name}}</div>\
</div>\
</label>\
</li>\
{{/airports}}\
</ul>\
');
app.autocomplete.create({
openIn:'popup',
openerEl: '#origin-ajax',
multiple: false, //allow multiple values
closeOnSelect: false, //go back after we select something
valueProperty:'ID',
textProperty:'name',
renderItem:function(item,index){
this.items.map(function(itm){
if(itm.ID==item.value){
itm.airports.map(function(it){
it.parent=itm.ID;
it.value=it.ID;
});
app.utils.extend(item,itm);
}
});
return TMPL(item)
},
source:function(query,render){
var autocomplete = this;
var results = [];
if (query.length === 0) {
render(results);
return;
}
autocomplete.preloaderShow();
app.request({
url: 'airports.json',
method: 'GET',
dataType: 'json',
data: {
query: query
},
success: function (data) {
console.log(data);
for (var i = 0; i < data.length; i++) {
if (data[I].name.toLowerCase().indexOf(query.toLowerCase()) >= 0) results.push(data[i]);
}
autocomplete.preloaderHide();
render(results);
}
});
},
on:{
open:function(a){
a.$el.once('input','.item-radio input',function(){
var val=this.value;
var value={};
for(var i=0;i<a.items.length;i++){
for(var j=0;j<a.items[i]["airports"].length;j++){
if(a.items[i]["airports"][j]["ID"]==val){
value=a.items[i]["airports"][j];
break;
}
}
}
Dom7('#origin-ajax').find('input').val(value.parent);
Dom7('#origin-ajax').find('.item-after').text(value.name);
a.close();
console.log(value.parent,value.name,value)
});
},
change: function (value) {
console.log(value);
var itemText = [],
inputValue = [];
for (var i = 0; i < value.length; i++) {
itemText.push(value[i].name);
inputValue.push(value[i].id);
}
// Add item text value to item-after
Dom7('#origin-ajax').find('input').val(value.join(', '));
Dom7('#origin-ajax').find('.item-after').text(value.join(', '));
}
}
});
the airport.json I just modify something on the city I added “name”: , so I can use this for airports and cities…
[{
"ID": "MILMIL",
"locationID": 4630,
"locationCode": "MIL",
"name": "Milan",
"latitude": "",
"longitude": "",
"cityCode": "MIL",
"cityName": "Milan",
"countryCode": "IT",
"countryName": "Italy",
"airports": [
{
"ID": "MILBGY",
"airportCode": "BGY",
"name": "Milan Bergamo\/Orio al Serio Airport",
"latitude": 45.6689,
"longitude": 9.70028,
"cityCode": "MIL",
"cityName": "Milan",
"countryCode": "IT",
"countryName": "Italy"
},
{
"ID": "MILLIN",
"airportCode": "LIN",
"name": "Milan Linate Airport",
"latitude": 45.4494,
"longitude": 9.27833,
"cityCode": "MIL",
"cityName": "Milan",
"countryCode": "IT",
"countryName": "Italy"
},
{
"ID": "MILMXP",
"airportCode": "MXP",
"name": "Milan Malpensa Airport",
"latitude": 45.63,
"longitude": 8.72306,
"cityCode": "MIL",
"cityName": "Milan",
"countryCode": "IT",
"countryName": "Italy"
},
{
"ID": "MILXIK",
"airportCode": "XIK",
"name": "Milano Centrale Railway Station",
"latitude": 45.4859,
"longitude": 9.20428,
"cityCode": "MIL",
"cityName": "Milan",
"countryCode": "IT",
"countryName": "Italy"
},
{
"ID": "MILIMR",
"airportCode": "IMR",
"name": "Milano Rogoredo Railway Station",
"latitude": 45.4336,
"longitude": 9.23849,
"cityCode": "MIL",
"cityName": "Milan",
"countryCode": "IT",
"countryName": "Italy"
}
]
},
{
"ID": "LONLON",
"locationID": 4254,
"locationCode": "LON",
"name": "London",
"latitude": "",
"longitude": "",
"cityCode": "LON",
"cityName": "London",
"countryCode": "GB",
"countryName": "United Kingdom",
"airports": [
{
"ID": "LONLCY",
"airportCode": "LCY",
"name": "London City Airport",
"latitude": 51.505,
"longitude": 0.0541667,
"cityCode": "LON",
"cityName": "London",
"countryCode": "GB",
"countryName": "United Kingdom"
},
{
"airportCode": "LGW",
"name": "London Gatwick Airport",
"latitude": 51.1481,
"longitude": -0.190278,
"cityCode": "LON",
"cityName": "London",
"countryCode": "GB",
"countryName": "United Kingdom"
},
{
"airportCode": "LHR",
"name": "London Heathrow Airport",
"latitude": 51.4775,
"longitude": -0.461389,
"cityCode": "LON",
"cityName": "London",
"countryCode": "GB",
"countryName": "United Kingdom"
},
{
"airportCode": "STN",
"name": "London Stansted Airport",
"latitude": 51.885,
"longitude": 0.235,
"cityCode": "LON",
"cityName": "London",
"countryCode": "GB",
"countryName": "United Kingdom"
},
{
"airportCode": "LTN",
"name": "London Luton Airport",
"latitude": 51.8747,
"longitude": -0.368333,
"cityCode": "LON",
"cityName": "London",
"countryCode": "GB",
"countryName": "United Kingdom"
},
{
"airportCode": "XQE",
"name": "Ebbsfleet Kent Station",
"latitude": 51.5074,
"longitude": -0.127758,
"cityCode": "LON",
"cityName": "London",
"countryCode": "GB",
"countryName": "United Kingdom"
},
{
"airportCode": "QQP",
"name": "Paddington Railway Station",
"latitude": 51.5154,
"longitude": -0.175743,
"cityCode": "LON",
"cityName": "London",
"countryCode": "GB",
"countryName": "United Kingdom"
},
{
"airportCode": "QQK",
"name": "Kings Cross Railway Station",
"latitude": 51.5316,
"longitude": -0.124423,
"cityCode": "LON",
"cityName": "London",
"countryCode": "GB",
"countryName": "United Kingdom"
},
{
"airportCode": "QQU",
"name": "Euston Railway Station",
"latitude": 51.5285,
"longitude": -0.133844,
"cityCode": "LON",
"cityName": "London",
"countryCode": "GB",
"countryName": "United Kingdom"
},
{
"airportCode": "ZEP",
"name": "Victoria Railway Station",
"latitude": 51.4952,
"longitude": -0.143898,
"cityCode": "LON",
"cityName": "London",
"countryCode": "GB",
"countryName": "United Kingdom"
},
{
"airportCode": "QQS",
"name": "London St. Pancras Railway Station Airport",
"latitude": 51.885,
"longitude": 0.235,
"cityCode": "LON",
"cityName": "London",
"countryCode": "GB",
"countryName": "United Kingdom"
},
{
"airportCode": "SEN",
"name": "London Southend Airport",
"latitude": 51.5698,
"longitude": 0.703737,
"cityCode": "LON",
"cityName": "London",
"countryCode": "GB",
"countryName": "United Kingdom"
}
]
}
]