0
我想設置將依賴於其他兩個變量後計算的,但我不希望這樣的計算 變量對這些增值經銷商之一的初始化反應。如何使變量初始化其
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);
警報消息應該只出現在我上的按鈕和因變量值,單擊改變。並且沒有'undefined'和初始值'111'的消息。有沒有內置的解決方案?謝謝。
您可以使用'{deferEvaluation:真正}您計算'選項,並在'doSmth'http明確要求://jsfiddle.net/bWLXh/。但是你的設計很奇怪:你不會在任何地方使用計算機本身,似乎你只是想利用自動迴歸的優勢......你能詳細說明你的使用案例並寫一點更多你想做什麼實現? – nemesv
不錯的解決方案,但它需要調用計算方法明確每個地方。我想避免它。你說得對,我不需要計算價值本身。我只想在代碼中找到一個地方,我可以在那裏處理某些變量的變化(當然是兩個以上)。 –
如果您不需要計算,那麼就不要在你的相關屬性,使用計算:)只是手動'subscribe',您可以在init做到這一點:http://jsfiddle.net/v2j2k/ – nemesv