Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从带有敲除的可观察数组计算百分比_C#_Asp.net Mvc 4_Knockout.js - Fatal编程技术网

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);