ko.observable通过函数更新

时间:2013-09-19 15:15:13

标签: javascript algorithm knockout.js

我只是在寻找一个快速的答案,因为我现在无法解决它。

我想通过一个操纵依赖的observables的函数,根据不同的其他observable的值更新一个observable。

假设我有一个包含2个字段的对象。其中1个也是一个对象,2个是我想要更新的可观察对象。

function Control(elem) {
var self = this;
self.element = element;
self.calc = ko.observable();
}

然后我有一个函数可以考虑元素并提供一个值。

function Control(elem) {
var self = this;
self.element = element;
self.calc = ko.observable('10');
self.doSomething = function () {
    var dummy = 0;
    if (self.element.number() === 1) 
        dummy = self.element.value + 10;
    else 
        dummy = self.element.value + '+ 10';
    return dummy;
    }
}

每次 number value 元素之一时,如何使用函数返回的结果更新 calc 变化?

我提到我不想直接用 dummy 替换它来更新 calc ,因为它会使可观察的触发器过多次。

JsFiddle:http://jsfiddle.net/razvangl/cf3kB/

1 个答案:

答案 0 :(得分:0)

确定。我解决了我只是使 calc 成为一个计算的observable,它等于函数 doSomething

function Control(elem) {
var self = this;
self.element = elem;
self.calc = ko.computed(function () {
    var dummy = 0;
    if (self.element.number() === 1) 
        dummy = self.element.value + 10;
    else 
        dummy = self.element.value + '+ 10';
    return dummy;
    });
}