我正在使用鬍子呈現通過Ajax接收的json數據。如何將小數點格式化爲小鬍子中的貨幣格式?
我想渲染這個數字在貨幣格式:使用鬍子模板引擎
"12,300"
:
{{price}}
例如:12300
我怎樣才能使其作爲?
我正在使用鬍子呈現通過Ajax接收的json數據。如何將小數點格式化爲小鬍子中的貨幣格式?
我想渲染這個數字在貨幣格式:使用鬍子模板引擎
"12,300"
:
{{price}}
例如:12300
我怎樣才能使其作爲?
在將模型傳遞到鬍鬚(或任何模板引擎)之前,您應該這樣做。除了能夠進行字符串操作之外,問題是並非所有國家的數字格式都相同,因此顯示錶示可能有所不同,因此不應在模板中進行硬編碼。
有些人會認爲數字是通用的,而iso格式是文化和演示文稿問題 – 2014-03-12 21:58:43
小鬍子很簡約,不提供任何支持。
你要麼必須提供的格式化數據或返回格式的數據
{ priceDecimal: function() { return formatDecimal(this.price); } }
另一種替代方法是使用handlebars.js支持輔助功能
Handlebars.registerHelper('decimal', function(number) {
return formatDecimal(number);
});
和使用它像這樣
的函數{{decimal price}}
是的。 mustache.java的成員建議應該有一個額外的演示文稿/視圖模型。 http://www.javarants.com/2013/03/09/mustache-is-logic-less-but-the-logic-has-to-go-somewhere/ – 2013-05-13 08:26:36
雖然我同意Lucero's answer,可以使用function in Mustache來格式化數據。
簡單的模板:
<ul>
{{#price}}
<li>{{commaFormat}}</li>
{{/price}}
</ul>
JavaScript來處理與格式化函數的數據爲您的價格:
var tpl = $('#tpl').html(),
data = {
price: ['1234', '123', '123456', '1234567890'],
commaFormat: function() {
// adapted from https://stackoverflow.com/questions/2901102/how-to-print-number-with-commas-as-thousands-separators-in-javascript
return this.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
},
html = Mustache.to_html(tpl, data);
document.write(html);
生成的HTML:
<ul>
<li>1,234</li>
<li>123</li>
<li>123,456</li>
<li>1,234,567,890</li>
</ul>
這裏的the working jsFiddle檢查和播放進一步。
我爲Mustache.js創建了一個小擴展,它可以在表達式中使用格式化程序,如{{expression |格式化}}
您可以在github上檢查:http://jvitela.github.io/mustache-wax/
我用的把手NumeralHelper包從https://www.npmjs.com/package/handlebars.numeral
首先,安裝(以及可選地將它保存到你的包。JSON):
npm install --save handlebars.numeral
下面,裝入幫手:
var Handlebars = require('handlebars');
var NumeralHelper = require("handlebars.numeral");
NumeralHelper.registerHelpers(Handlebars);
最後,用它在你的頁面:
<script>
myNumber = 12300:
</script>
<div>
{{ number myNumber }}
</div>
這個例子的輸出是12,300
。
你關心本地化嗎? (根據語言環境使用','或'。'作爲分隔符) – guival 2016-11-16 11:33:43