迭代通過observablearray我有一個ProjectPeriod項目列表作爲observableArray在淘汰賽viewModel其中包括每個時期的月數。我想在foreach中顯示每行的結束日期。目前,我在viewModel中使用了ko.computed值,但我無法循環顯示每個項目直到顯示的項目。我怎樣才能遍歷和總結顯示的值直到當前項目的foreach?我如何檢索ko.computed運行總和的foreach時,通過knockout.js
目前我有以下HTML:
<table>
<tr class="tableHeader">
<th>Period</th>
<th>Number of Months</th>
<th>End of Period</th>
</tr>
<tbody data-bind="foreach: ProjectPeriod">
<tr>
<td><input data-bind="value: ProjectYearText" /></td>
<td><input data-bind="value: PeriodMonths" /></td>
<td data-bind="text: endDate"></td>
</tr>
</tbody>
</table>
及以下視圖模型:
function ProjectPeriod(projectYearId, projectYearText, periodMonths, viewModel) {
var self = this;
self.ProjectYearId = projectYearId;
self.ProjectYearText = ko.observable(projectYearText);
self.PeriodMonths = ko.observable(periodMonths);
self.viewModel = viewModel;
self.endDate = ko.computed(function() {
var startDate = hfProjectDates.Get("ProjectStartDate");
// Calculate the number of months from the beginning to the current period.
var monthCount = 0;
ko.utils.arrayForEach(self.viewModel.ProjectPeriods(), function (projectPeriod) {
if (projectPeriod.ProjectYearId < self.ProjectYearId)
monthCount += projectPeriod.PeriodMonths;
});
var endDate = moment(startDate).add('M', monthCount);
return endDate ? endDate.format("M/DD/YYYY") : "None";
});
}
function ProjectPeriodViewModel() {
// Data
var self = this;
self.ProjectPeriods = ko.observableArray([
new ProjectPeriod(1, "1st Year", 12, ProjectPeriodViewModel),
new ProjectPeriod(2, "2nd Year", 12, ProjectPeriodViewModel),
new ProjectPeriod(3, "3rd Year", 12, ProjectPeriodViewModel)
]);
}
我真的剛開始接觸淘汰賽,所以我希望有以上幾個問題進行我正在接近這一點。但具體而言,我需要得到運行結束日期來顯示。
更新:基於馬特的反饋我已經更新,包括在ProjectPeriod中的observable,但我遇到了從viewModel獲取引用並遍歷數組的問題。
不知道你想要什麼。你想在每一行的結尾處累計月數嗎?因此,第一排的12個月,第二排的24個等等? –
是的,基本上這就是我需要的。在輸入框中輸入月份的時間段。我需要每一行來顯示結束日期。因此,第1行可能有5個月,periodEndDate將爲startdate + 5個月,第2行有12個月進入,periodEndDate將爲startdate + 17個月。 – tlbignerd