gpt4 book ai didi

knockout.js - knockout JS 更新颜色

转载 作者:行者123 更新时间:2023-12-04 05:46:42 25 4
gpt4 key购买 nike

我正在使用 Knockout observables 来更新位于表格单元格内的跨度值。当新值与旧值不同时,我需要更改表格单元格的背景颜色。似乎当我订阅 observable 时,我在更新期间无法访问旧值。有没有办法获得旧值?我计划使用带有可观察状态的 css 绑定(bind)来更新表格单元格背景。

<td data-bind="css: { tempIncreased: tempState() > 0 }">
<span data-bind="text: temp"></span>
</td>

在 View 模型中:
   this.temp.subscribe(function (newValue) {
var old = this.temp();
if (newValue > old) {
this.tempState = 1;
}
else {
this.tempState = 0;
}
}, this);

最佳答案

Knockout 2.0 增加了订阅 observables 的功能。 “beforeChange”主题将为您提供之前的值。

有了这个,你可以扩展 observables 来添加一个订阅,为回调提供旧值和新值。

它可能看起来像:

ko.observable.fn.beforeAndAfterSubscribe = function(callback, target) {
var _oldValue;
this.subscribe(function(oldValue) {
_oldValue = oldValue;
}, null, 'beforeChange');

this.subscribe(function(newValue) {
callback.call(target, _oldValue, newValue);
});
};

您可以将此功能添加到 ko.subscribable.fn而不是 ko.observable.fn能够对计算的和正常的可观察量执行此操作。

你会这样使用:
this.temp.beforeAndAfterSubscribe(function (oldValue, newValue) {
if (newValue > oldValue) {
this.tempState = 1;
}
else {
this.tempState = 0;
}
}, this);

这是一个示例: http://jsfiddle.net/rniemeyer/QDbUk/

关于knockout.js - knockout JS 更新颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10589681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com