使用绑定处理程序敲除js fomat文本

时间:2017-03-16 22:07:18

标签: javascript knockout.js

我正在使用knockout js和ko.mapping将我的服务器端视图模型映射到客户端。在我的服务器端视图模型中,我有一个十进制属性,我试图用逗号而不是ui上的点显示。

我查看了几个主题并找到了this,它有fiddle

ko.bindingHandlers.numericText = {
update: function(element, valueAccessor, allBindingsAccessor) {
   var value = ko.utils.unwrapObservable(valueAccessor()),
       precision = ko.utils.unwrapObservable(allBindingsAccessor().precision) || ko.bindingHandlers.numericText.defaultPrecision,
       formattedValue = value.toFixed(precision);

    ko.bindingHandlers.text.update(element, function() { return formattedValue; });
},
defaultPrecision: 1  
};

小提琴显示的内容与我的场景之间的区别在于我试图在文本框中显示值,而小提琴只显示在div中。

为了测试我已经将所有内容成功绑定到div。 我也尝试过改变

ko.bindingHandlers.text.update(element, function() { return formattedValue; });

ko.bindingHandlers.value.update(element, function() { return formattedValue; });

我的其余代码

<input class="form-control" id="txtDisplayFrom" data-bind="numericText: DisplayFrom" placeholder="Display From" type="text">

var vm = function (data) {
           var self = this;
           ko.mapping.fromJS(data, {}, self);
           ...other stuff
        }

1 个答案:

答案 0 :(得分:0)

刚修改了你发布的小提琴:http://jsfiddle.net/RVL6q/553/ 这就是你追求的目标吗?

下面的小提琴代码:

ko.bindingHandlers.numericText = {
    update: function(element, valueAccessor, allBindingsAccessor) {
       var value = ko.utils.unwrapObservable(valueAccessor()),
           precision = ko.utils.unwrapObservable(allBindingsAccessor().precision) || ko.bindingHandlers.numericText.defaultPrecision,
           formattedValue = value.toFixed(precision);

        ko.bindingHandlers.text.update(element, function() { return formattedValue; });
        ko.bindingHandlers.value.update(element, function() { return formattedValue.replace('.',','); });


    },
    defaultPrecision: 2  
};


var viewModel = {
    myValue: ko.observable(123.55454),
    myPrecision: ko.observable(4)
};

ko.applyBindings(viewModel);