Проблемы с шаблонами в представлениях Backbone.js: атрибуты this.el - PullRequest
2 голосов
/ 26 мая 2011

Я пытаюсь найти лучший способ визуализации li-элемента:

Я читал, что должен никогда заменить this.el

Кажется, мне нужно развернуть шаблон в моей функции LiView render():

// replace element content with html generated from template
var $rendered = $.tmpl(this.template, this.model.toJSON());
this.el.html($rendered.unwrap().html());

Я просто получаю содержимое внутри $rendered li, так как не должен его заменять.

Но как мне передать атрибуты?

Я пытался:

this.el.attr('class', $rendered.attr('class'));
this.el.attr('title', $rendered.attr('title'));

Но он заменяет атрибуты ... А некоторые (например, jQuery ui-draggable) могут быть потеряны.

Все это кажется немного неуклюжим ...

Спасибо!

1 Ответ

5 голосов
/ 27 мая 2011

Я не уверен, что полностью понимаю, что вы пытаетесь сделать, Олов, но я постараюсь ответить на ваш вопрос, независимо от того:)

У вас есть liView, который соответствует li domэлемент Итак, вам нужно указать

el: "li"

Не указывайте li в вашем шаблоне.Тогда результат вашего рендера будет

<li>
    contents of template
</li>

Теперь вы хотите добавить атрибуты к этому элементу li?Имена классов довольно просты, просто добавьте атрибут className к вашему представлению

className: "ui-draggable myGreatClass ui-corner-all"

Если вам нужно добавить дополнительные атрибуты к корневому (li) элементу

$(el).attr("title","your title")

Если это не такэто не работает для вас, и вы хотите поместить атрибуты li в свой шаблон, возможно, рассмотрите некоторую форму следующего:

  1. Допуск HTML в форме:
  2. Вместо liView (представление элемента списка), просто используйте ulView (представление списка) и поместите конструкцию цикла в ваш шаблон
...