あなたcomputed
は、実際に私はあなたが使用することを意図と思わせるこれ、何も返さないsubscribe
:
offers.hasError(!offers.hasError());
:これは新しい何かに
hasError
の値を変更することによってトリガすることができ
offers.hasError.subscribe(function(newValue) {
if (newValue) {
model.offers.resetCards(self.offersCards);
}
});
計算の現在の値を取得するには、()
を使用して呼び出します。
var comp = ko.computed(function() { return "A" });
console.log(comp()); // Prints "A"
以前の値と現在の値を記録するには、"beforeChange"
サブスクリプションを作成します。
var obs = ko.observable("Observable");
var computed = ko.computed(function() {
return "Computed " + obs();
});
computed.subscribe(function(oldValue) {
console.log("Value before: " + oldValue);
}, null, "beforeChange");
computed.subscribe(function(newValue) {
console.log("Value after: " + newValue);
console.log("---------------------");
});
obs("Observable 1");
obs("Observable 2");
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
ですから、古い値に新しいを比較するテストを書きたい場合は、あなたがこれを書くことができる::
var obs = ko.observable("Observable");
var computed = ko.computed(function() {
return "Computed " + obs();
});
var computedOldValue = computed();
// Whenever the computed changes, store its old value
computed.subscribe(function(oldValue) {
computedOldValue = oldValue;
}, null, "beforeChange");
// To compare the current to the new value:
console.log("Computed has changed: ", computedOldValue !== computed());
obs("TEST");
console.log("Computed has changed: ", computedOldValue !== computed());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
それがどのように動作するかです