Javascript 带字符的敲除附加观察值

Javascript 带字符的敲除附加观察值,javascript,jquery,knockout.js,knockout-2.0,Javascript,Jquery,Knockout.js,Knockout 2.0,我在KnockoutJS应用程序中有可观察对象,它们的值是从应用程序中全局包含的数组中获取的,例如: self.observable = ko.observable(App[0].Observable_Value); 为了方便起见,我们假设可观测的_值=10 这是您期望的工作方式,self.observate绑定到的默认具有正确的值;十, 我现在想做的是在中添加一个%作为可观察对象,这样在输入字段中显示的输出将是10% 我只想在输入值后面加上一个%,因为我需要可观察值作为一个数字而不是一个字符

我在KnockoutJS应用程序中有可观察对象,它们的值是从应用程序中全局包含的数组中获取的,例如:

self.observable = ko.observable(App[0].Observable_Value);
为了方便起见,我们假设可观测的_值=10

这是您期望的工作方式,self.observate绑定到的
默认具有正确的值;十,

我现在想做的是在
中添加一个%作为可观察对象,这样在输入字段中显示的输出将是10%

我只想在输入值后面加上一个%,因为我需要可观察值作为一个数字而不是一个字符串可读,以防止以后在应用程序中出现NaN错误。该应用程序严重依赖数字

我曾经尝试过用read/write&parseFloat作为一个计算函数来实现这一点,但没有成功


有什么想法吗?

我认为在这种情况下,最好的选择是一个

我只想在输入值后面加上一个%,因为我需要可观察值作为一个数字而不是字符串可读

这正是绑定处理程序所能做的——保留可观察对象的原始值,但改变其显示方式

我试着把它作为一个计算函数

虽然一个计算函数可以做到这一点,但它通常是不必要的,除非您想实际处理来自计算函数的返回值。在这种情况下,因为您只想更改视觉显示,所以不需要另一个表示相同值的变量

这是一个非常基本的方法,它只是在可观测值前面加上一个
%
符号


您可以添加一个读/写可计算表,该表将添加显示百分比,然后在设置基础值时将其删除:


是的,在你发布小提琴之前,我刚刚做了一件类似的事情,非常感谢!我仍然是一个新手!呃,刚刚遇到一个新错误。一旦您进入并用%更新值,页面上显示的总数将变为NaN,因为%正在干扰@你能做一把小提琴(或修改我的)来重现这个问题吗?
ko.bindingHandlers.percent = {
    init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
        var value = ko.unwrap(valueAccessor());
        $(element).text('%' + value);
    }
};
ko.observable.fn.formatAsPercent = function() {
    var base = this;
    return ko.computed({
        read: function() {
            return base() + "%";
        },
        write: function(newValue) {
            base(parseInt(newValue.replace('%', '')));
        }
    });
};

function ViewModel() {
    var self = this;
    self.number = ko.observable(10); // actual number
    self.percent= self.number.formatAsPercent(); // used for binding to show %
}

var my = { vm : new ViewModel() };

ko.applyBindings(my.vm);