C# 从带有敲除的可观察数组计算百分比
我有一组嵌套的任务,按类别分组,我试图计算完成百分比。现在,我认为一个计算出的值是可行的,所以我尝试按照下面的代码使用它。我甚至在一个点上,我只是试图返回一个观察到的字段,并在我的视图中显示它 问题是,我没有得到任何返回值。我是不是走错了路C# 从带有敲除的可观察数组计算百分比,c#,asp.net-mvc-4,knockout.js,C#,Asp.net Mvc 4,Knockout.js,我有一组嵌套的任务,按类别分组,我试图计算完成百分比。现在,我认为一个计算出的值是可行的,所以我尝试按照下面的代码使用它。我甚至在一个点上,我只是试图返回一个观察到的字段,并在我的视图中显示它 问题是,我没有得到任何返回值。我是不是走错了路 @model DTO <div data-bind="with: TasksByCategory"> <div class="summaryGroup" data-bind="template: {name: 'CategoryT
@model DTO
<div data-bind="with: TasksByCategory">
<div class="summaryGroup" data-bind="template: {name: 'CategoryTemplate', foreach: TasksByCategory}"></div>
</div>
@section Scripts{
<script src="~/Scripts/ViewModel/Details.js"></script>
<script src="~/Scripts/moment.js"></script>
<script src="~/Scripts/Bindings/date.js"></script>
<script type="text/html" id="CategoryTemplate">
<h3 data-bind="text: category_name, click:$parents[$parents.length - 1].ShowHide"></h3>
<div>
<span data-bind="text: pct"></span>
<div data-bind="template: {name: 'SubCategoryTemplate', foreach: Subcategories }" class="TaskCategory"></div>
<div data-bind="template: {name: 'TaskTemplate' , foreach: tasks } " class="TaskCategory"></div>
</div>
</script>
<script type="text/html" id="SubCategoryTemplate">
<h4 data-bind="text: category_name, click: $parents[$parents.length - 1].ShowHide"></h4>
<div class="Items" data-bind=" template: {name: 'TaskTemplate' , foreach: tasks } "></div>
</script>
<script type="text/html" id="TaskTemplate">
<table>
<tr>
<td><strong data-bind=" text:task_name" style="font-weight:bold"></strong></td>
<td>
<select data-bind="options: $parents[$parents.length - 2].TaskStates, optionsText:'state', optionsValue:'id', value: task_state_id "></select>
</td>
</tr>
<tr>
<text data-bind="text:task_desc"></text>
</tr>
</table>
</script>
}
根据我的理解,你可以这样做。尽量避免正常的
for
循环,尽量使用ko.utils
函数,这样可以提供灵活性
self2.percentage = ko.computed(function () {
var totalActual = 0;
var totalPossible = 0;
ko.utils.arrayForEach(self.tasks(),function(task){
if (task.task_state_id != -1) {
totalAcutal += task.task_state_id;
totalPossible += 3;
}
});
if (totalActual != 0) // i belive you trying to finding % for overall
return (totalActual / totalPossible);
else
return "N/A";
}, self2);
谢谢我试试看。但是我仍然很难在我的视野中看到任何东西。我们是否偏离了最初的问题?希望我没有错,你只是在计算上有点问题。如果其他部件有问题,请将其作为新部件发布,以便其他部件可以跟上。有点。。我在实际工作中遇到了很多问题。正如我提到的,我试图返回一个加载的字段,但它没有显示。我有一种预感,这与它的装载方式有关。(别误会,你关于for循环的提示也会有帮助!)
TasksByCategory
你在哪里循环。分享你的完整视图和模型我会在有时间的时候试着编一些东西。为沟通失误干杯。谢谢你的帮助!更新了我的原始文章,有完整的视图。
self2.percentage = ko.computed(function () {
var totalActual = 0;
var totalPossible = 0;
ko.utils.arrayForEach(self.tasks(),function(task){
if (task.task_state_id != -1) {
totalAcutal += task.task_state_id;
totalPossible += 3;
}
});
if (totalActual != 0) // i belive you trying to finding % for overall
return (totalActual / totalPossible);
else
return "N/A";
}, self2);