Я пытаюсь собрать шаблон списка адресов электронной почты. Используя Handlebars.js с requirejs и Backbone.js, первоначальный рендеринг отображается, как и ожидалось — один ввод электронной почты со значком добавления, чтобы добавить больше.
var EmailView = bb.View.extend({
tagName: 'ul',
className: 'emailList',
events: {
"click .addEmail" : "addEmail",
"click .deleteEmail" : "deleteEmail"
},
initialize : function () {
this.template = hb.compile(hbTemplate);
},
render : function () {
this.$el.htmlPolyfill(this.template(this.model.toJSON()));
this.updateIcons();
return this;
},
...
Обработчик addEmail (я пробовал appendPolyfill(), appendPolyFillTo и текущий updatePolyFill(). Все дают одинаковые результаты. Новый элемент строки добавляется, но все заполнители исчезают (это верно для элементов управления вне $el, это Кажется, это вся страница.)
addEmail : function(e) {
this.$el.append( this.template({}) );
this.$el.updatePolyfill();
this.updateIcons();
}
Я хочу, чтобы существующие элементы управления сохраняли свой текст-заполнитель, а новый добавленный также отображал текст-заполнитель. Что мне не хватает?
Если это поможет, шаблон выглядит так...
<li>
<span class="requiredPrompt">*</span>
<img class="icon" alt="" src="/images/emailIcon.png" />
<input type="email" class="emailAddress" value="" placeholder="Email Address" maxlength="50" required/>
<a class="deleteEmail" href="javascript:void(0)">
<img class="icon" alt="" src="/images/delFile.png" />
</a>
<a class="addEmail" href="javascript:void(0)">
<img class="icon enabled" alt="" src="/images/addFile.png" />
<img class="icon disabled" alt="" src="/images/addFile-disabled.png" />
</a>
</li>