【问题标题】:angularJS filter not filtering dataangularJS过滤器不过滤数据
【发布时间】:2014-09-15 14:09:20
【问题描述】:

我有一个测试 Todo 应用程序的 json 响应,所以我可以在这里学习 AngularJS,这是 Json 响应:

{"id":"1","text":"Et aut optio et enim necessitatibus magni voluptatem.","due_date":"1970-08-04 00:00:00","priority":"2","created_at":"2014-09-15 01:26:52","updated_at":"2014-09-15 01:26:52"}

然后我对所有响应进行角度循环并创建待办事项表:

<table class="table table-striped table-condensed table-hover">
    <thead>
        <th>Todo</th>
        <th>Priority</th>
        <th>Due Date</th>
    </thead>
    <tbody>
        <tr ng-repeat="todo in todos">
            <td>{{ todo.text }}</td>
            <td>{{ todo.priority }}</td>
            <td>{{todo.due_date | date:mediumDate}}</td>
        </tr>
    </tbody>
</table>

一切正常,除了 date:mediumDate 过滤表中的日期仍然显示时间戳样式而不是过滤格式。什么可能导致它失败?

【问题讨论】:

    标签: angularjs laravel filter


    【解决方案1】:

    您需要将mediumDate 指定为字符串,date:'mediumDate' 也是如此

    如后所述,您使用的日期字符串不是 AngularJs 认可的 ISO 8601 日期格式,因此要使其使用相同的数据,您需要发送具有标准日期格式的 json 或自行解析。如果要解析上面的日期字符串,可以使用以下代码:

      $scope.parseTheDate = function(dateString) {
        if (dateString) {
          var properlyFormattedDate = dateString.split(" ").join("T");
          return new Date(properlyFormattedDate);
        } else {
          return null;
        }
      };
    

    并将其与 html 结合起来:

        <tr ng-repeat="todo in todos">
            <td>{{ todo.text }}</td>
            <td>{{ todo.priority }}</td>
            <td>{{ parseTheDate(todo.due_date) | date:'mediumDate'}}</td>
        </tr>
    

    工作人员:http://plnkr.co/edit/xDhCzpYEQOoflKLs3pSq?p=preview

    【讨论】:

    • mediumDate 是我从 angularJS 文档中获得的过滤器;但是,我尝试了您的解决方案,但不幸的是它仍然无法正常工作。
    • 那么 mediumDate 在哪里声明?它与您的控制器的范围相关联吗?是全局变量吗?
    • 其实另一个问题是1970-08-04 00:00:00不是angular能理解的日期字符串格式。如果您使用1970-08-04T00:00:00 格式,它将起作用。您可以使用格式正确的日期字符串发送 json,也可以创建自定义日期解析器
    • @beauXjames mediumDate 是在 angular 中定义的预定义可本地化格式。
    • @JoseM 实际上,OP 可以使用“mediumDate”作为文档状态:“mediumDate”:相当于 en_US 区域设置的“MMM d, y”(例如 2010 年 9 月 3 日),其中“中” ':相当于 en_US 区域设置的 'MMM d, y h:mm:ss a'(例如,2010 年 9 月 3 日下午 12:05:08)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    • 2014-11-25
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    相关资源
    最近更新 更多