如何在初始化后计算变量

时间:2014-02-07 08:10:31

标签: javascript knockout.js

我正在尝试设置一个取决于其他两个变量的变量,但我不想要那个计算出来的变量 变量对其中一个变量的初始化做出反应。

var viewModel = function() {
    var self = this;
    self.first = ko.observable("");
    self.second = ko.observable();

    self.doSmth = function() {
        self.second(self.second() + 1);
    };

    self.init = function(o){
        self.second(o);
    };

    self.comp = ko.computed(function(){
        self.first();
        self.second();
        alert(self.second());
    });
};
var vm = new viewModel();
ko.applyBindings(vm);
vm.init(111);

http://jsfiddle.net/TCAHS/1/

仅当我单击按钮并且因变量值已更改时,才会显示警报消息。并且没有任何带有' undefined'的消息和初始值' 111'。有没有内置的解决方案?感谢。

1 个答案:

答案 0 :(得分:0)

我将使用简单的解决方案......如何设置标志以检查observable是否已初始化,如:

var viewModel = function() {
    var self = this;
    self.first = ko.observable("");
    self.second = ko.observable();

    self.doSmth = function() {
        self.second(self.second() + 1);
    };

    self.init = function(o){
        self.second(o);
    };

    var initialized = false;

    self.comp = ko.computed(function(){
        self.first();
        self.second();

        if (initialized) {
            alert(self.second());
        }
        initialized = true;
    });
};
var vm = new viewModel();
ko.applyBindings(vm);
vm.init(111);

这是fiddle