У меня есть вызов AJAX, возвращающий следующий JSON:
{
"categories": [
{
"active": true,
"name": Cat1,
"items": [
{
"active": true,
"id": 1,
},
{
"active": true,
"id": 2,
}
]
},
{
"active": true,
"name": Cat2,
"items": [
{
"active": true,
"id": 3,
},
{
"active": true,
"id": 4,
}
]
}
]}
, и я хочу, чтобы имена категорий верхнего уровня переходили в одно представление списка, а идентификаторы элементов нижнего уровня переходили в другой списокуровень после щелчка по элементу родительской категории.
В настоящее время у меня есть код, работающий для создания просмотра списка категорий верхнего уровня, как показано ниже (это JQM):
<div data-role="content">
<script id="Template-categories" type="text/x-jquery-tmpl">
<li data-theme="a" class="ui-btn ui-btn-icon-right ui-li ui-li-has-alt ui-btn-up-a">
<div class="ui-btn-inner ui-li ui-li-has-alt">
<div class="ui-btn-text">
<a href="#${name}" class="ui-link-inherit">
<h3 class="ui-li-heading">${name}</h3>
</a>
</div>
</div>
</li>
</script>
<ul data-role="listview" id="listview-categories" data-theme="a">
</ul>
И этозапрос AJAX:
<script> // JSONP for ALL
$(document).ready(function() {
$.ajax({
url: "http://####.heroku.com/api/all_categories.json",
data: "format=json",
cache: false,
dataType: "jsonp",
type: 'GET',
timeout: 5000,
success: function(data) {
$.each(data, function() {
$("#Template-categories").tmpl(data.categories).appendTo("#listview-categories");
});
$.each(data, function() {
// THIS IS WHERE I GET LOST! How to then break down the category 1 items and category 2 items into their own listview dynamically!
});
},
error: function()
{ alert('BOOOO Error');}
});
});
Итак: у меня работает верхний уровень, мне просто нужно получить второй уровень (.items
), чтобы вывести список представлений, подчиненных ихродительский элемент (категории).Если это сложная проблема, даже рассказать мне, как я мог бы вручную выполнить цикл each
с оператором if
для категории 1 (например, если name=Category 1
затем выполнить цикл по массиву элементов), что было бы полезно, так как я мог простожестко запишите это в html сейчас.
Спасибо!
РЕДАКТИРОВАТЬ: пробовал этот код ...
Я думаю, одна вещь, которую я не понимаю, почему это нене работает ...
success: function(data) {
$.each(data, function() {
$("#Template-categories").tmpl(data.categories).appendTo("#listview-categories");
});
$.each(data, function() {
if(data.categories.name == "Cat1"){
$("#Template-cat1").tmpl(data.categories.items).appendTo("#listview-cat1");
}
});
И затем в моем шаблоне просто используется атрибут ${id}
и еще много чего для отображения значений из массива элементов.