javascript - $FireFox 中的插值错误

标签 javascript angularjs firefox

我的日期来自数据库,如下所示:2013-11-21 17:43:20

以下代码在 FireFox 中存在错误,但在 Chrome 中运行良好:

<ul class="job-lookup-results" ng-show="data" style="padding:0 10px;">
    <li class="job-lookup-result" ng-repeat="result in data" style="margin:5px 0; font-size:80%;"><a href="/admin/jobs/edit/{{result.Job.id}}" class="job-lookup-result-link">{{result.Job.name}}</a> ({{result.Job.id}}), {{result.Company.name}}, {{result.Job.created | dateToISO | date:'shortDate'}}</li>
    <li class="job-lookup-result" ng-hide="data.length > 0">No matches found.</li>
</ul>

这是错误:

[15:17:40.890] "Error: [$interpolate:interr] http://errors.angularjs.org/1.2.5/$interpolate/interr?p0=%20(%7B%7Bresult.Job.id%7D%7D)%2C%20%7B%7Bresult.Company.name%7D%7D%2C%20%7B%7Bresult.Job.created%20%7C%20dateToISO%20%7C%20date%3A'shortDate'%7D%7D&p1=RangeError%3A%20invalid%20date
...

我不明白这个错误,但如果它与我的自定义过滤器有关,这里是:

app.filter('dateToISO', function() {
  return function(input) {
    input = new Date(input).toISOString();
    return input;
  };
});

更新 当我删除 | dateToISO | 它有效。所以它似乎连接到自定义过滤器。

最佳答案

好的,由于 FireFox 正在处理错误的日期格式(Chrome 会忽略它),您将不得不手动修复格式。过滤器仍然是可行的方法。

标记:

<div>{{Object.created | badDateToISO | date:'shortDate'}}</div>

JavaScript:

app.filter('badDateToISO', function() {
  return function(badTime) {
    var goodTime = badTime.replace(/(.+) (.+)/, "$1T$2Z");
    return goodTime;
  };
});

Live demo here (click).

关于javascript - $FireFox 中的插值错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20766636/

相关文章:

javascript - "ReferenceError: Can' t 查找变量 : google"on checking for undefined

javascript - JS : Function vs Class differences

jquery - Bootstrap多选: close dropdown for each checkbox selection

angularjs - 无法让 ng-repeat 动画在 Angular 1.4.4 中工作

html - 嵌入PDF会随机不显示

javascript - js提交没有值(value)

javascript - node.js 返回未定义的问题

javascript - 如何从 Angular 外部获取指令值?

android - 创建与桌面和 Android 兼容的单个 Firefox 扩展

selenium - Selenide 测试在 Firefox 中挂起