2017-03-16 60 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