Этот вопрос следует из другого вопроса, который я задал, но парень, который, я думаю, пытался объяснить что-то еще, или, скорее всего, я не объяснил свое право.Подчеркивание шаблона, без петли?
Итак, весь мой базовый код работает и отображает данные с выходными данными. Теперь для этого объясните мои тестовые данные, у меня есть 17 строк входов, но даже без создания цикла _.each
, его цикл примерно 17 раз, что я просто не понимаю, почему?
Так мой Backbone код,
var TimeSheetModel = Backbone.Model.extend({
defaults: {
Timesheetrow: "",
}
}); //End of Timesheet Model
var TimeSheetCollection = Backbone.Collection.extend({
model: TimeSheetModel,
url: '/dashboard/jsondata/' + TimesheetID()
}); //End of Timesheet Collection
var TimeSheetView = Backbone.View.extend({
el:'#testarea', //HTML loading area for the data
template: _.template($('#TimesheetData').html()), //Template to load the JSON data into
initialize: function(){
var NewTimeSheetCollection = new TimeSheetCollection(); //New Instance Of Collecttion
this.listenTo(NewTimeSheetCollection, "add", this.AddMyModel);
NewTimeSheetCollection.fetch();
},
AddMyModel: function(TimeSheetModel) { //apply model data to view template and append to view element
this.$el.append(this.template(TimeSheetModel.toJSON()));
//$(this.el).html(this.template(TimeSheetRowModel.toJSON()));
}
}); //End of Timesheet View
//New Instance & render call for the set Timesheet View.
NewTimeSheetVew = new TimeSheetView();
//NewTimeSheetVew.render(); <- do I need this? seems to work, without it?
});
И мой код шаблона Подчеркивание
<script type="text/template" id="TimesheetData">
<% console.log(Timesheetrow) %>
<% _(1).times(function(n){ n=2; }); //just a test bit of code %>
<% if(Timesheetrow.jobtitle) { %>
<form action="#" method="post" id="TimesheetDataList">
<div class="TimesheetRowData">
<input type="hidden" name="data[Timesheetrow][0][id]" value="<%= Timesheetrow.id %>">
<input type="type" name="data[Timesheetrow][0][jobtitle]" value="<%= Timesheetrow.jobtitle %>">
</div>
</form>
<% }; %>
</script>
так что моя цель состоит в том, чтобы использовать позвоночник, чтобы иметь один основной вид, и петлю вокруг 17 раз (или X, в зависимости от заданных пользователем строк). Так, например, я бы выход, как:
<form id="ID-HERE">
<div><input value="XXXXX"></div>
<div><input value="XXXXX"></div>
<div><input value="XXXXX"></div>
<div><input value="XXXXX"></div>
<div><input value="XXXXX"></div>
</form>
Но что я получаю это то, что петли в 17 раз, так что каждый вход в качестве своего собственного тега формы, так что я в настоящее время есть 17 формы на моей странице.
Любая помощь приветствуется.
Пожалуйста, дайте мне знать, если я не объясню себя правильно, я дислексичен, поэтому мое правописание, грамматика, может быть, немного отжато, извините.
Спасибо,
@ DANIEL-J-г, Большое спасибо, очень хороший ответ. Дает мне очень четкую направленность на то, что нужно исследовать. Какой метод, по вашему выбору, является лучшим? Или это просто сводится к тому, как вы хотите его закодировать? Первый вариант выглядит лучше всего, поскольку он получает основу, чтобы делать больше работы и делает шаблон более простым. –
Мне нравится разбивать код между основным и дочерним представлениями, но в зависимости от того, насколько сложны ваши требования, это может быть излишним. Для простых требований я мог бы просто пойти с промежуточным решением, имея шаблон для общей формы и шаблон для отдельных TimesheetRows –
@ daniel-j-g. Были ли у вас хорошие сайты для примеров на представлениях мастера/ребенка? Я перешел к документам Underscore & Backbone, но мне их немного сложно следовать, поскольку они только дают небольшой пример кода, а не целый рабочий раздел кода, который я считаю лучше всего понятым, но это может быть просто мне :) –