【问题标题】:Getting a list of time zones names with moment-timezone within AngularJS controller [closed]在AngularJS控制器中获取带有时刻时区的时区名称列表[关闭]
【发布时间】:2018-02-18 00:10:02
【问题描述】:

我有一个基于 AngularJS 的 SPA,我正在尝试在 AngularJS 控制器中获取带有 moment-timezone 的时区名称列表。

  • 这是我在导入它时遇到的错误:“Uncaught TypeError: Cannot read property 'length' of undefined. at addZone (moment-timezone.js:385)”
  • MomentJS 本身运行良好,即导入时刻(不是时刻时区)
  • 我更喜欢使用纯 Moment,而不是像 angular-moment 这样的任何环绕它
  • 在 chrome 浏览器上运行

为什么会发生这个错误? 你能提供一个有效的小代码示例吗?

更新(我正在添加代码):

'use strict';
import moment from 'moment'; // works
import momentTZ from 'moment-timezone'; // this breaks it

export default class RequestCtrl {
    constructor() { 
        console.log(moment()); //works
        //console.log(momentTZ.tz.names());
        //console.log(moment().tz('America/Los_Angeles').format());}

为了单独测试时刻时区,我使用了 JSFiddle。这是 TZ 使用 angularJS 的屏幕截图。不幸的是,它仍然在我的项目中中断

【问题讨论】:

  • 你能提供一个可以工作的小代码示例吗? - 你能提供一个工作的示例吗?询问者有责任提供有关问题的所有必要信息。否则,该问题被视为离题,可以关闭。见stackoverflow.com/help/mcve
  • @estus 更新了请求的信息
  • 您的问题仍然没有很好地构建。在共享代码之前列出问题。除了"How to ask" 建议之外,您还需要首先以一种专注于您的研究之后仍然存在什么差距的方式来陈述问题。描述您迄今为止所做的step like these,包括代码、条件和错误。陈述你已经知道的“明显”上下文,so that people understand what you have tried

标签: javascript angularjs timezone momentjs single-page-application


【解决方案1】:

如果您想获取所有时区的列表,您必须导入 moment-timezone 模块。

你可以像我们做其他模块一样导入和使用moment-timezone模块。

在其中我们可以使用moment.tz.names()获取所有时区列表

确保你的 webpack 配置中有 json loader。看起来时刻时区模块需要这个。

【讨论】:

  • 谢谢@G_S。我现在添加了代码。我确实导入时刻时区。知道为什么会中断吗?
  • 它还是坏了?你的情况不是 momentTZ().tz.names() 吗?
  • 是的。我会更新。尽管如此,我什至没有到达那里。当我导入“moment-timezone”时(笑)它会中断。
  • 我希望你为 moment-timezone 做了一个 npm i (我通常忘记这样做)。一旦更新对象并让我们知道它是否仍然损坏
  • 好的。因此,根据您更新的代码,时刻时区正在工作。根据控制台,您将获得名称。对吗?
猜你喜欢
  • 2020-03-19
  • 2020-01-02
  • 2016-10-25
  • 2012-01-04
  • 2013-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多