KnockoutJS数学

时间:2014-04-15 15:44:42

标签: javascript jquery knockout.js knockout-2.0

我是淘汰赛的新手,我仍然不知所措,我想知道如何使用两个KO变量进行简单的数学运算(加法和乘法)。

我有的时候:

self.popInc1 = ko.observable('0.3');
self.popIncrease = ko.computed(function () {
    return self.popInc1() + " x " +  self.population();
});

这很棒,因为它返回并打印出来:“ 0.3 x 54,556,239

但是我想将两个变量相乘。我尝试过以下方面没有成功。

self.popInc1 = ko.observable('0.3');
self.popIncrease = ko.computed(function () {
    return Math.floor(self.popInc1() * self.population());
});

在分钟0.3是静态的,但最终将从文本输入动态。

2 个答案:

答案 0 :(得分:1)

这样的事情怎么样? http://jsfiddle.net/barryman9000/UNaUk/2/

<div data-bind="text: popIncrease"></div>
<input type="text" data-bind="value: userInput,  valueUpdate: 'afterkeydown'" />


var ViewModel = function(){
    var _self = this;
    _self.userInput = ko.observable(0.3);
    _self.population = ko.observable(54556239);

    _self.popIncrease = ko.computed(function () {
        return Math.floor(_self.userInput() * _self.population());
    });
};

<强>更新 我看到你解决了这个问题,但我认为我还包括这个小提琴。你可以在_self.population() observable初始化时提供零,然后在你用来从数组中获取该值的任何函数中,你可以更新observable,你的计算应该工作精细 http://jsfiddle.net/barryman9000/UNaUk/3/

_self.population = ko.observable(0);

答案 1 :(得分:1)

我修复了它,从数组中提取的原始值是字符串而不是数字。捂脸。