Versuch Knockout zu einer ASP.NET-Core-Anwendung zu erlernen und zu integrieren. Dies ist die am weitesten ich in der Lage gewesen, durch folgende verschiedene Beiträge zu erhalten:Foreach wiederholt nur letztes Element
function DayViewModel(number, name /*others*/)
{
this.dayNumber = number;
this.dayName = name;
//others
}
var MonthViewModel = function(days /*others*/)
{
this.monthDays = ko.observableArray(days);
}
$(function()
{
var tempDays = [];
@foreach(var day in Model.Days)
{
string dayName = day.DayNumber.ToString().PadLeft(2, '0') + " - " + Globals.GetDayName(Model.YearNumber, Model.MonthNumber, day.DayNumber, Globals.GetUICulture(Context));
@:tempDays.push(DayViewModel(@day.DayNumber, "@dayName" /*others*/);
}
var monthViewModel = new MonthViewModel(tempDays /*others*/);
ko.applyBindings(monthViewModel);
});
Dann wird die Tabelle:
<table id="mTable" class="table">
<thead>
<tr>
<th>@Html.DisplayNameFor(model => newModel.DayNumber)</th>
</tr>
</thead>
<tbody data-bind="foreach: monthDays">
<tr>
<td>
<a href="#" data-bind="text: dayName"></a>
</td>
</tr>
</tbody>
</table>
Dieses korrekt erzeugt ein <tr>
Element für die gleiche Anzahl von Elementen in dem Array, und das generierte HTML zeigt mir, dass tempDays
alle richtigen Elemente hat.
Warum wiederholt Knockout nur das letzte Element? Was mache ich falsch, was ich in der Dokumentation nicht finden kann?
Vielen Dank, ich fühle mich wie ein Noob. Es hat perfekt funktioniert –