繁体   English   中英

AngularJS过滤器-Ruby on Rails资产:预编译问题

[英]AngularJS filter - Ruby on Rails assets:precompile issue

我在Ruby on Rails中使用了AngularJS。 我使用带有自定义符号的货币过滤器。

<span>{{value|currency:'¥'}}<span>

该过滤器在开发环境中运行良好。

¥1,000.00

但是,在生产模式下运行时,货币符号将转换为特殊字符。

�1,000.00

PS:我在所有文件中都使用了UTF-8编码。 在production.rb中尝试了以下内容

config.assets.js_compressor = Sprockets::LazyCompressor.new { Uglifier.new(:mangle => false) }

任何想法如何解决这个问题? 谢谢大家

如何在production.rb环境文件中包含类似内容? config.assets.precompile += %w( angular.js )

或可能使用此gem https://github.com/hiravgandhi/angularjs-rails

我通过重写货币过滤器并添加.replace(/\�/g, currencySymbol);来解决此问题.replace(/\�/g, currencySymbol);

以下原始代码摘自https://github.com/angular/angular.js/blob/1c1cd4fdf6b6d7511c7b8dc61b8042011dc54830/src/ng/filter/filters.js

currencyFilter.$inject = ['$locale'];
function currencyFilter($locale) {
  var formats = $locale.NUMBER_FORMATS;
  return function(amount, currencySymbol){
    if (isUndefined(currencySymbol)) currencySymbol = formats.CURRENCY_SYM;
    return formatNumber(amount, formats.PATTERNS[1], formats.GROUP_SEP, formats.DECIMAL_SEP, 2)
           .replace(/\u00A4/g, currencySymbol);
  };
}

最终代码如下所示

return formatNumber(amount,currencyFormat , ',', '.', fractionSize).
        replace(/\u00A4/g, currencySymbol).replace(/\uFFFD/g, currencySymbol);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM