Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   $.tmpl - работа с темплейтами. Или как правильно сделать группировку? (https://javascript.ru/forum/jquery/28071-%24-tmpl-rabota-s-templejjtami-ili-kak-pravilno-sdelat-gruppirovku.html)

svs_js 06.05.2012 18:19

$.tmpl - работа с темплейтами. Или как правильно сделать группировку?
 
Всем привет :)

Есть данные, какие приходят на страницу аяксом
data:
[
   {
	"book": "Name_1",
	"author": "author_first",
	"details": "description of this item 1"
   }, {
	"book": "Name_2",
	"author": "author_first",
	"details": "description of this item 2"
   }, {
	"book": "Name_3",
	"author": "author_second",
	"details": "description of this item 3"
   }       
]

Название книги, автор и описание книги
Для наглядности выложу весь код скрипта
(function ($) {
    $.widget("example.book", {
        options: {
	data:
	[
	{
		"book": "Name_1",
		"author": "author_first",
		"details": "description of this item 1"
	}, {
		"book": "Name_2",
		"author": "author_first",
		"details": "description of this item 2"
	}, {
		"book": "Name_3",
		"author": "author_second",
		"details": "description of this item 3"
	}       
        ],
	templateGroup: '<div class="group"><div class="thumbnail">${book}</div><p>${details}</p></div>',
	template: '<div>${groupname}</div>'
        },

        _create: function () {
            var self = this;
            this._bind();
        },
        _bind: function () {
            var self = this;
			self._send(self._render(this.options.param));
			
        },
        _render: function (params) {
            return $.tmpl(this.options.templateGroup, this.options.data);
        },
        _send: function (message) {
            this.element.append(message);
        },
        destroy: function () {
            return $.Widget.prototype.destroy.call(this);
        }
    });

})(jQuery);
$(document).ready(function () {
    $('#messages').book();
});



Функция
_render: function (params) {
     return $.tmpl(this.options.templateGroup, this.options.data);
}


отрендерит нам все книги. не выводя авторов книг
Задача такая.
Сделать список в виде:

Автор 1
Книга 1, описание
Книга 2, описание

Автор 2
Книга 1, описание



У меня есть некоторые предположения..
Вывести список авторов (вопрос, как правильно вывести неповторяющихся авторов). Вторым шагом вывести в блок с именем автора список книг и их описание (ф-цией appendTo)..
Или может как-то нужно перетрансформировать наш список data и сделать это более простым способом. хочу увидеть ваши мнения по этому поводу.
Спасибо


Часовой пояс GMT +3, время: 19:15.