You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Angular 1控制器中正确引入并使用Moment.js?

在AngularJS 1控制器中使用Moment.js的正确方式

因为Moment.js通过CDN加载后是作为全局变量window.moment存在的,AngularJS的依赖注入系统默认不会识别它,直接注入自然会抛出异常。你需要先把它注册为Angular模块的常量或服务,再注入到控制器中,具体步骤如下:

1. 将Moment注册为Angular常量

在你的Angular模块定义完成后(或者单独的配置文件中),添加以下代码,把全局的moment对象映射到Angular的依赖系统中:

angular.module('app')
  .constant('moment', window.moment);

这种方式最简单直接,不需要额外封装逻辑,只是把已存在的全局对象纳入Angular的依赖管理体系。

2. 在控制器中注入并使用Moment

修改你的控制器代码,在依赖注入数组和函数参数中添加moment:

angular.module('app').controller('homeCntr', ['$scope','$http','$stateParams','moment', function ($scope,$http, $stateParams, moment) {
  // 现在可以正常调用Moment.js的所有API了
  // 示例:格式化当前时间
  $scope.currentDateTime = moment().format('YYYY-MM-DD HH:mm:ss');
  
  // 你的其他业务逻辑代码...
}]);

额外说明:为什么不直接用全局的window.moment?

虽然你可以在控制器里直接写window.moment()来调用,但这种方式不符合AngularJS的依赖注入规范,会让代码难以进行单元测试(无法模拟Moment对象),也降低了代码的可维护性,所以更推荐上面的注册注入方式。

内容的提问来源于stack exchange,提问作者Dhruv Marwha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:27:05