首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KnockoutJS与数组上的计算绑定

KnockoutJS与数组上的计算绑定
EN

Stack Overflow用户
提问于 2016-01-18 13:55:09
回答 2查看 59关注 0票数 0

目前,我正在尝试使用表单和KnockoutJS工具来计算整个地板空间。所有这些都已经被设置好了,它的工作已经到了计算总楼面空间的程度。

JsFiddle:http://jsfiddle.net/rmfloris/zmc0nzrr/24/

访问者可以将4个不同的空间(self.ruimtes)相加,这些空间都需要计算才能达到总楼板间距(this.totaalOppervlakte)。我已经为总楼面间距设置了一个计算函数,并在其中设置了一个循环,以遍历所有的“ruimtes”。当我运行代码并使用console.log时,它似乎没有遍历数组,这是有意义的,因为数组在开始时是空的。但是,当我通过self.ruimtes.push()函数对数组进行更改时,仍然没有发生任何事情。

代码语言:javascript
复制
this.totaalOppervlakte = ko.computed(function() {
    var total = 0;
    $.each(self.ruimtes, function() {
        console.log('calculation')
        total = total + self.Oppervlakte();
    });
    return total.toFixed(2);
});

知道为什么ko.computed不像预期的那样工作吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-18 14:23:07

代码中有几个问题。首先,计算出的totaalOppervlakte不在ViewModel的范围之内,所以self并不等于您认为它所做的事情。其次,您对$.each的使用似乎已经停止。我可以想象你是在寻找更像这样的东西:

代码语言:javascript
复制
var total = 0;
$.each(self.ruimtes(), function(ruimte){
    total += ruimte.Oppervlakte();
});

主要的区别是:

  1. self.ruimte似乎是一个错误,应该是self.ruimtes。
  2. self.ruimtes是一个可观察到的敲除,必须打开-> self.ruimtes()
  3. 您忽略了回调中的参数。

您可以在这里查看$.each的正确用法:http://api.jquery.com/jquery.each/

票数 2
EN

Stack Overflow用户

发布于 2016-01-18 14:01:07

您正在尝试使用jQuery的数组迭代器( observableArray )在each上迭代。observableArray不是数组,而是包含数组。在尝试迭代之前,您需要取出数组值。

代码语言:javascript
复制
$.each(self.ruimte(), function() {

而且,那不是应该是self.ruimtes

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34856445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档