【问题标题】:Angular-moment - cannot read property 'utc' of undefined角矩 - 无法读取未定义的属性“utc”
【发布时间】:2014-10-29 23:33:08
【问题描述】:

我正在尝试使用 angular-moment 的指令 am-time-go,但出现以下错误:

TypeError: Cannot read property 'utc' of undefined

我在这样的简单控制器中使用它(在玉中):

    span(am-time-ago="myItem.date")

我的日期工作正常,格式如下:

2014-10-29T23:31:23Z

我也尝试过配置我的模块:

myApp.constant('angularMomentConfig', {
    preprocess: 'utc',
    timezone: 'Europe/Berlin'
});

但是没有任何效果。这个问题的根源在哪里?

非常感谢

【问题讨论】:

    标签: javascript angularjs momentjs


    【解决方案1】:

    请参阅下面的工作示例。确保您参考了所有脚本并且它们的顺序正确

    var app = angular.module('app', ['angularMoment']);
    
    app.constant('angularMomentConfig', {
      preprocess: 'utc',
      timezone: 'Europe/Berlin'
    });
    
    app.controller('firstCtrl', function($scope) {
      $scope.myItem = {
        date: "2014-10-29T23:31:23Z"
      };
    });
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.22/angular.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.3/moment.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/angular-moment/0.8.2/angular-moment.js"></script>
    
    <body ng-app="app">
      <div ng-controller="firstCtrl">
    
    
        <span am-time-ago="myItem.date"></span>
      </div>
    </body>

    【讨论】:

      【解决方案2】:

      在我将 moment.js 脚本标签移到 angular-moment.js 脚本标签之前,我遇到了这个问题。尝试按此顺序放置脚本标签...

      <script src="/Scripts/moment.js"></script>
      <script src="/Scripts/angular-moment.js"></script>
      

      【讨论】:

        【解决方案3】:

        显然,由于 v2.4 moment 不再是全局对象,这导致每次 angular-moment 引用 moment 时都会出现“未定义”。

        我切换到 v.2.3.1,它现在就像一个魅力

        【讨论】:

        【解决方案4】:

        这显然是新的momentjs 的问题,其中moment 不能作为全局变量使用。

        对于那些使用nwjs 的人,这个comment 问题#194 对我有用。

        var app = angular.module('myapp', ['angularMoment']);
        var moment_mod = require('moment');
        app.constant('moment', moment_mod);
        

        我还尝试了 angular-moment 的 beta.4 版本(在我的 nwjs 应用程序中),它传递了使用 moment 的 npm 模块的警告(以便从一开始就可以使用全局矩对象)。

        【讨论】:

          【解决方案5】:

          对于那些使用nwjs 的人,我的所有模块都使用这个:

          if (typeof nw !== "undefined" && nw !== null) { console.log('NW detected, remove global !'); window.node_global = global; window.global = void 0; }

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-08-17
            • 2019-04-28
            • 2019-01-25
            • 2021-08-03
            • 2020-12-14
            • 2021-11-01
            • 2018-08-17
            相关资源
            最近更新 更多