【发布时间】:2014-08-27 05:27:33
【问题描述】:
我有一个可观察项目,我正在尝试在该可观察项目上应用用户驱动的格式。我有一个整数输入框,用户可以在其中选择多少个小数位,0-6。我正在尝试根据该输入框中的选择更新 observable 以应用小数位。
我首先尝试了一个计算值,但没有成功。返回“toFixed”不是函数的错误。
this.formattedResult = ko.computed(function () {
var newValue = self.decimalValue();
var precision = self.decimalPlaces();
return newValue.toFixed(precision);
});
然后我尝试添加一个绑定处理程序,这会导致“toFixed”上出现“未捕获的对象”
ko.bindingHandlers.numericText = {
update: function (element, valueAccessor, allBindingsAccessor) {
var value = new String(ko.utils.unwrapObservable(valueAccessor()).toString());
var precision = ko.utils.unwrapObservable(allBindingsAccessor().precision);
var formattedValue = value.toFixed(precision);
ko.bindingHandlers.text.update(element, function () { return formattedValue; });
},
defaultPrecision: 1
};
然后我尝试用 numericText 扩展 numeric,这也会导致“toFixed”上出现“未捕获对象”错误。
ko.extenders.numeric = function (target, precision) {
if (precision() != null) {
var precisionValue = target();
console.log(precisionValue);
var precisionDecimal = precisionValue.toFixed(2);
console.log(precisionDecimal);
var result = ko.dependentObservable({
read: function () {
return target().toFixed(precision());
},
write: target
});
result.raw = target;
return result;
}
else
return target;
};
HTML 元素上的绑定已全部更新以考虑这些更改,但它们不起作用。我也尝试简单地将“toFixed”添加到 HTML 中的数据绑定中,但这也不起作用。
我发现了这些类似的问题,但解决方案对我不起作用。
Formatting rules for numbers in KnockoutJS
Adding decimal formatting to Knockout number data bindings
这是一个非常令人沮丧的问题,因为我认为在计算函数中添加小数位非常简单。我做错了什么?
我不确定这是否重要,但我使用的是淘汰赛 3.1
编辑:
我也尝试简单地将“toFixed”添加到数据绑定中,但这也会导致未捕获的对象。
<p data-bind="text: decimalValue().toFixed(2)"></p>
【问题讨论】:
标签: javascript html knockout.js