首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AngularJS过滤器- Ruby on Rails资源:预编译问题

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

Stack Overflow用户
提问于 2013-04-15 22:56:48
回答 2查看 446关注 0票数 0

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

代码语言:javascript
复制
<span>{{value|currency:'¥'}}<span>

该过滤器在开发环境中工作良好。

代码语言:javascript
复制
¥1,000.00

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

代码语言:javascript
复制
�1,000.00

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

代码语言:javascript
复制
config.assets.js_compressor = Sprockets::LazyCompressor.new { Uglifier.new(:mangle => false) }

你知道怎么解决这个问题吗?谢谢大家

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-19 13:37:05

我通过重写货币过滤器并添加.replace(/\uFFFD/g, currencySymbol);来修复这个问题

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

代码语言:javascript
复制
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);
  };
}

最终的代码将如下所示

代码语言:javascript
复制
return formatNumber(amount,currencyFormat , ',', '.', fractionSize).
        replace(/\u00A4/g, currencySymbol).replace(/\uFFFD/g, currencySymbol);
票数 0
EN

Stack Overflow用户

发布于 2013-04-16 00:32:20

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

或者可以使用这个gem https://github.com/hiravgandhi/angularjs-rails

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16018413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档