2012-07-18 48 views
13

Tôi đang sử dụng bộ ria mép để hiển thị dữ liệu json nhận được thông qua Ajax.làm thế nào tôi có thể định dạng số thập phân sang định dạng tiền tệ trong bộ ria mép?

Tôi muốn làm cho con số này ở định dạng tiền tệ:

{{price}}

ví dụ: 12300

Làm thế nào tôi có thể làm cho nó như:

"12,300"

sử dụng công cụ ria mép khuôn mẫu ?

+0

Bạn có quan tâm đến việc bản địa hóa không? (Sử dụng ',' hoặc '.' Làm dấu phân cách tùy thuộc vào ngôn ngữ) – guival

Trả lời

1

Bạn nên làm điều đó trước khi chuyển mô hình của mình vào bộ ria mép (hoặc bất kỳ công cụ mẫu nào thực sự). Ngoài việc có thể thực hiện chuỗi hoạt động, vấn đề là không phải tất cả các quốc gia đều định dạng các số giống nhau, sao cho biểu diễn hiển thị có thể khác và không được mã hóa cứng trong mẫu.

+5

một số sẽ cho rằng số là phổ dụng trong khi định dạng iso là vấn đề về văn hóa và bản trình bày –

12

Moustache rất tối giản và không cung cấp bất kỳ hỗ trợ nào cho việc này.

Bạn có thể phải cung cấp dữ liệu định dạng hoặc một hàm trả về dữ liệu định dạng

{ priceDecimal: function() { return formatDecimal(this.price); } } 

Một lựa chọn khác là sử dụng handlebars.js mà hỗ trợ chức năng helper

Handlebars.registerHelper('decimal', function(number) { 
    return formatDecimal(number); 
}); 

và sử dụng nó như

này
{{decimal price}} 
+1

Có. Thành viên của mustache.java đề xuất nên có một mô hình trình bày/xem bổ sung. http://www.javarants.com/2013/03/09/mustache-is-logic-less-but-the-logic-has-to-go-somewhere/ –

7

Khi tôi đồng ý với Lucero's answer, bạn có thể sử dụng function in Mustache để định dạng dữ liệu của mình.

Mẫu Simple:

<ul> 
    {{#price}} 
     <li>{{commaFormat}}</li> 
    {{/price}} 
</ul> 

hoạt Javascript để xử lý dữ liệu với một chức năng định dạng cho giá của bạn:

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 Kết quả:

<ul> 
    <li>1,234</li> 
    <li>123</li> 
    <li>123,456</li> 
    <li>1,234,567,890</li> 
</ul> 

Dưới đây là the working jsFiddle kiểm tra và vui chơi với hơn nữa.

4

Tôi đã tạo một phần mở rộng nhỏ cho Mustache.js cho phép sử dụng các trình định dạng bên trong các biểu thức, như {{expression | formatter}}

Bạn có thể kiểm tra xem nó trong github: http://jvitela.github.io/mustache-wax/

0

tôi sử dụng gói tay lái NumeralHelper từ https://www.npmjs.com/package/handlebars.numeral

Đầu tiên, cài đặt (và tùy chọn lưu nó vào gói của bạn.json):

npm install --save handlebars.numeral 

Tiếp theo, tải các helper:

var Handlebars = require('handlebars'); 
var NumeralHelper = require("handlebars.numeral"); 
NumeralHelper.registerHelpers(Handlebars); 

Cuối cùng, sử dụng nó trong trang của bạn:

<script> 
myNumber = 12300: 
</script> 

<div> 
{{ number myNumber }} 
</div> 

Kết quả ví dụ này là 12,300.

Các vấn đề liên quan