【发布时间】:2017-04-08 15:42:13
【问题描述】:
尝试学习 Knockout 并将其集成到 ASP.NET Core 应用程序中。这是我通过关注不同帖子所能获得的最远距离:
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);
});
然后,表格:
<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>
这会为数组中相同数量的项目正确生成 <tr> 元素,并且生成的 HTML 显示 tempDays 具有所有正确的项目。
为什么 Knockout 只重复最后一个元素呢?在文档中找不到我做错了什么?
【问题讨论】:
标签: javascript jquery asp.net-mvc knockout.js asp.net-core