【问题标题】:Calling a value from JSON in the controller in AngularJS so I can edit it在 AngularJS 的控制器中从 JSON 调用一个值,以便我可以编辑它
【发布时间】:2013-01-06 07:37:13
【问题描述】:

我想知道是否有人可以在这里为我提供帮助。

我正在使用 JSON 文件来使用 AngularJS 创建时间线。我已经能够弄清楚如何使用 HTML 绑定 ng-repeat 循环输出日期,但我需要编辑日期输出; “2013-01-01”在我重新格式化后变为“2012 年 12 月 31 日”。

我一直在努力弄清楚如何在控制器中提取日期值,以便我可以将它应用到一个函数中,将该值转换为正确的日期——通过在日期上添加另一天。

非常感谢!我希望这是有道理的。

【问题讨论】:

  • 日期过滤器这样做:docs.angularjs.org/api/ng.filter:date。如果这不是您所需要的,您可以发布您的控制器代码和更多上下文吗?
  • 我已经尝试过了,但它并没有完全按照我的意愿工作。这是我的索引视图文件中出现的内容:
    {{event.initialDate | date:'MMMM d, yyyy'}}
    以事件为范围,“initialDate”作为我的 JSON 中的键值。假设这个特定的“initialDate”的值是,例如,字符串“2013-01-01”。它是如何使用 AngularJS 的日期过滤器输出的:“2012 年 12 月 31 日”。一次约会。你有什么想法来解决这个问题吗?谢谢!

标签: javascript json controller angularjs timeline


【解决方案1】:

Javascript 自动本地化日期。角度中的 date 过滤器需要一个时区,如果没有提供时区,则假定为 UTC。问题是,一旦您的无时区(因此假定为 UTC)字符串被本地化,它就不再是 2013-01-01,而是比您的时区少几个小时。在太平洋标准时间,这是-8。所以日期似乎是前一天。

来自服务器的数据应该有一个与之关联的时区——这只是最佳实践。没有它,假设 UTC 是一个不错的选择。毕竟,需要一些标准。

这里有一个 Plunker 展示了它是如何工作的几个例子,如果你需要的话:http://plnkr.co/edit/Jhwnkj?p=preview

【讨论】:

  • 哇,这个答案现在让一切变得如此明显!这比我预期的要简单得多。非常感谢您的帮助!
  • @lisasy 如果这是正确答案,您介意接受吗?谢谢!
【解决方案2】:

在您的视图中使用 Angular 日期过滤器。您不必更改控制器中的任何值。 这是给你的例子http://plnkr.co/edit/iqIpW5uADTRVFycDxdBa

读取 AngularJS 日期过滤器。 http://docs.angularjs.org/api/ng.filter:date

【讨论】:

猜你喜欢
  • 2012-03-06
  • 1970-01-01
  • 1970-01-01
  • 2012-03-13
  • 2012-07-27
  • 2019-04-29
  • 1970-01-01
  • 2017-06-02
  • 2017-09-30
相关资源
最近更新 更多