【问题标题】:How to solve moment not defined error in Angularjs?如何解决 Angularjs 中未定义的时刻错误?
【发布时间】:2018-02-07 19:03:21
【问题描述】:

我想使用meanjs应用程序中的日期范围功能过滤基于invoice_date的项目(开始和结束日期)。

  • 我的问题是日期过滤功能在 plunker and my localHost production 中运行良好,但在推送到服务器时,如果某些 invoice_date 值日期为 `2017-08-24 和2017-07-27'这些数据没有显示在表格中,我不知道我在哪里做错了,我错过了什么.....My Plunk

  • 请查看我的 plunker 以供参考。

  • 我已经显示invoice_date,所以这是我要用于过滤的字段。

  • 所以我到底在寻找什么,我想过滤 invoice_date 作为开始日期和结束日期:例如:- 如果我们选择像 24-05-2017 这样的开始日期并结束表中的日期是24-08-2017 这两个事务只需要显示或过滤...所以我使用日期范围过滤器来实现此解决方案,但在服务器中它不适合我们请帮助。

  • 在我的服务器中,如果我选择 end date 作为今天的日期,所有数据都显示在表格上,所以我认为问题是基于这些字段 $scope.from = new Date(2014, 04, 30); $scope.to = new Date(2019, 08, 25);

  • 在终端出现这个错误如果我们解决这个错误肯定会得到解决方案,我自己尝试过但我无法解决这个问题......所以请帮助解决这个问题。

控制器:

 .filter('dateRange', function() {
    return function(records, dateKey, from, to) {
        return records.filter(function(record) {
            return !moment(record[dateKey], 'YYYY-MM-DD').isBefore(moment(from))
            && !moment(record[dateKey], 'YYYY-MM-DD').isAfter(moment(to));
        });
    };
})

HTML:

<input type="date" class="form-control" name="from" ng-model="from">

<input type="date" class="form-control" name="to" ng-model="to">

过滤器:-

ng-repeat="data in  record | dateRange : 'invoice_date' : from : to"

【问题讨论】:

  • 我无法复制您的错误。但是,我确实注意到 ng 脚本引用需要很长时间才能加载。您可能还想使用cdnjs.cloudflare 链接。
  • 我没有看到你在哪里注射时刻?
  • 感谢您的评论,我只在我的项目中使用过这个'cdnjs.cloudflare.com/ajax/libs/moment.js/2.13.0/moment.js'...但是上面的屏幕截图错误再次显示...请帮助我感谢您的提前跨度>
  • @rrd 请查看我的 plunker 以供参考
  • 我做到了,但仍然没有看到它被注射到那里的任何地方。你有一个脚本标签是的,但时刻(至少在我每天使用的 Angular 代码中)作为依赖注入。

标签: html angularjs meanjs


【解决方案1】:

我认为您错过了配置和注入您的模块。请使用摘自here的步骤

  1. 首先使用 bower 安装 moment 库

    bower install angular-moment --save

  2. 然后包括以下内容:

    moment.js & angular-moment.js

  3. 像这样在你的模块中配置

    var myapp = angular.module('myapp', ['angularMoment']);

    像 as 一样在你的控制器中使用

    angular.module('fooApp') .controller('FooCtrl', ['$scope', 'moment', function ($scope, moment) { $scope.exampleDate = moment().hour(8).minute(0).second(0).toDate(); }]);

【讨论】:

    【解决方案2】:

    我通过在我的 index.html 文件中添加这一行来解决它,请在 index.html 中添加这一行并再次运行。

    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment-with-locales.min.js"></script>
    

    【讨论】:

    • 哪一行?你没有举个例子。
    猜你喜欢
    • 1970-01-01
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    • 2022-06-22
    相关资源
    最近更新 更多