【发布时间】:2014-07-09 17:26:35
【问题描述】:
我正在使用 Knockout 构建一个数量/选项非常繁重的应用程序,并且在我目前正在处理的屏幕上,就幕后发生的事情而言,它非常复杂。整个屏幕是动态的,显示的选项是从 observableArray 生成的。
示例:
function backgroundTreatmentsOption(label, value, active, name) {
var self = this;
self.label = ko.observable(label),
self.value = ko.isObservable(value) ? value : ko.observable(value),
self.active = ko.isObservable(active) ? value: ko.observable(active),
self.name = ko.observable(name)
};
self.background_treatments_options = ko.observableArray([]);
self.background_treatments_options.push(new backgroundTreatmentsOption(
Treatment_Settings[0].Background_Treatments[0].Label_dose_H1s[0].label_text,
sessionStorage.getItem('background_treatments_label_dose_h1s_value') || Treatment_Settings[0].Background_Treatments[0].Label_dose_H1s[0].default_value,
false,
'bg-label-dose-h1s'
));
然后要获取每个对象的值(self.value)(稍后在应用程序中使用),我执行以下操作:
self.background_treatments_updosed_h1s_2x_3x_4x_value = ko.computed(function () {
var value = 0;
for (var i = 0; i < self.background_treatments_options().length; i++) {
if (i == 1) {
value += parseFloat(self.background_treatments_options()[i].value());
}
}
return value;
});
现在解释起来有点复杂,所以如果有什么没有直接意义的地方,请告诉我。
每个标签 (self.label) 在单击时会在 DOM 中切换该元素的“活动”状态,以显示其已打开/关闭的可见外观。
当标签切换为“关闭”时,我需要强制相关值(在本例中为 self.background_treatments_updosed_h1s_2x_3x_4x_value)重置为 0。我已经能够使用以下方法将输入值重置为 0 hacky jQuery,但这不会重置 DOM/KO 级别的值。
所以我的问题是,当点击标签时,如何强制self.background_treatments_updosed_h1s_2x_3x_4x_value变为0?
【问题讨论】:
-
在淘汰赛中读/写你试过吗?使用它你可以强制一个新值。欢呼
-
你如何写回你正在读取的相同值?或者更具体地说,如何使用上面的示例将 0 写入 self.background_treatments... 变量?
标签: javascript jquery knockout.js knockout-2.0