2017-03-16 32 views
0

我使用基石js和ko.mapping将我的服务器侧视图模型映射到客户端。在我的服务器端视图模型中,我有一个小数属性,我试图用逗号而不是UI上的点来显示。使用绑定处理程序敲除js格式文本

我看了很少的线程,发现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 
     } 

回答

0

只是修改你发布的小提琴:http://jsfiddle.net/RVL6q/553/ 那是什么y你以后?

小提琴下面的代码:

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); 
+0

感谢您的答复,但我不会收到以下错误'无法处理绑定 “numericText:函数(){返回DisplayFrom}”' – tony09uk

+0

@ tony09uk,您可以发布你的代码是给出错误?无法在没有源代码的情况下调试错误! – roshankar