Knockout.js 我可以绑定到计算的可观察数组(敲除)?

Knockout.js 我可以绑定到计算的可观察数组(敲除)?,knockout.js,ko.observablearray,computed-observable,Knockout.js,Ko.observablearray,Computed Observable,我有一些项目(简单的数字对)的可观察数组,我想将其绑定到一个表。然后,我想绑定一个计算出的observable,它循环第一个数组,并通过分组对一些值求和。我的foreach循环工作正常,并按组对数字进行汇总(您可以通过取消我的警报注释看到这一点),但它从不绑定到html。看看下面我的小提琴。我哪里做错了 function DataPoint(group, num) { this.group = group; this.num = num; } function TestViewModel() {

我有一些项目(简单的数字对)的可观察数组,我想将其绑定到一个表。然后,我想绑定一个计算出的observable,它循环第一个数组,并通过分组对一些值求和。我的foreach循环工作正常,并按组对数字进行汇总(您可以通过取消我的警报注释看到这一点),但它从不绑定到html。看看下面我的小提琴。我哪里做错了

function DataPoint(group, num) {
this.group = group;
this.num = num;
}
function TestViewModel() {
var self = this;

self.data = ko.observableArray([
    new DataPoint(1, 1),
    new DataPoint(2, 5),
    new DataPoint(3, 9),
    new DataPoint(3, 10),
    new DataPoint(4, 3),
    new DataPoint(4, 6),
    new DataPoint(5, 3),
    new DataPoint(5, 9),
    new DataPoint(6, 7),
    new DataPoint(7, 2),
    new DataPoint(8, 8),
    new DataPoint(8, 4),
    new DataPoint(9, 3),
    new DataPoint(11, 6)
])

self.groupedData = ko.computed(function () {
    var total = 0;
    var group = -1;
    var myArray = self.data();
    var counter = 0;
    var rows = self.data().length;
    var result = ko.observableArray([]);
    ko.utils.arrayForEach(myArray, function (item) {
        if (group == -1) {
            group = item.group;
        }
        if (group == item.group) {
            total += parseInt(item.num)
        } else {
            var d = new DataPoint(group, total);
            result.pop(d);
            total = 0;
            group = item.group;
            total += parseInt(item.num)
            //alert(d.group + ':' + d.num);
        }
        if (counter == rows - 1) {
            var d = new DataPoint(group, total);
            result.pop(d);
            //alert(d.group + ':' + d.num);
        }
        counter += 1;
    });
    return result();
    },self);
}

ko.applyBindings(new TestViewModel());
还有html

<body>
Ungrouped Data

<table>
    <thead>
        <tr>
            <td>Group</td>
            <td>Sum</td>
        </tr>
    </thead>
    <tbody data-bind="foreach: data">
        <tr>
            <td>
                <span data-bind="text: group"></span>
            </td>
            <td>
                <span data-bind="text: num"></span>
            </td>
        </tr>
    </tbody>
</table>
<br />
Grouped Data
<table>
    <thead>
        <tr>
            <td>Group</td>
            <td>Sum</td>
        </tr>
    </thead>
    <tbody data-bind="foreach: groupedData">
        <tr>
            <td>
                <span data-bind="text: group"></span>
            </td>
            <td>
                <span data-bind="text: num"></span>
            </td>
        </tr>
    </tbody>
</table>
<script src="Scripts/lib/knockout-3.0.0.js"></script>
<script src="Scripts/app/TestViewModel.js"></script>
</body>

非分组数据
团体
总和

分组数据 团体 总和

提前感谢您的建议

result.pop(d)
应该是
result.push(d)


用荷马·辛普森不朽的话来说。。。。啊

狗娘养的……非常感谢!我知道这必须是一件简单的事情,但我在我试图做的事情中迷失了方向。当我简化视图模型来创建这个示例时,我应该已经注意到了这一点。而且,您很少需要在计算的可观察对象中创建可观察对象<代码>var结果=ko.observableArray([])应该是
var result=[]