AngularJS:如何正确传递moment.js依赖?

时间:2016-10-17 17:40:28

标签: angularjs momentjs angular-moment

我有一个app.js,我已经宣布了我的app变量/ module:

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

然后我让我的控制器和其他人一起传入引用并尝试进行moment()调用:

myApp.controller('myComtroller', ['$scope', 'moment', function ($scope, $http, $timeout, moment) {
    var now = moment();
    console.log(now);
}]);

我在我的控制台中出错了:

  

TypeError:时刻不是函数

我不明白为什么会这样做。

在我身体的尽头,我将此作为我的参考:

<script src="~/lib/angular/angular.min.js"></script>
<script src="~/js/moment.js"></script>
<script src="~/lib/angular-moment/angular-moment.min.js"></script>
<script src="~/js/app.js"></script>

按此顺序。 (控制器稍后执行,该视图的部分脚本脚本)

我通过从这里下载http://momentjs.com/docs/

来安装moment.js

但我通过angular-moment安装了bower依赖项。

有什么建议吗?

3 个答案:

答案 0 :(得分:3)

您在依赖项注释中缺少某些依赖项。

尝试:

myApp.controller('myComtroller', [
         '$scope','$http', '$timeout', 'moment', 
function ($scope , $http ,  $timeout,   moment) {
    var now = moment();
    console.log(now);
}]);

另外,我建议使用ng-annotate自动处理DI注释。

答案 1 :(得分:0)

看看angular-momentjs.js https://raw.githubusercontent.com/gdi2290/angular-momentjs/master/angular-momentjs.js

加载脚本angular-momentjs.js

<script type="text/javascript" src="./angular-momentjs.js"></script>

在应用模块中注入依赖angular-momentjs,在控制器中注入$moment

let app = angular.module('myApp', ['angular-momentjs']);
app.controller('myCtrl', function($scope, $moment) {
   let nowISO = $moment().toISOString();
   console.log(nowISO);
});

答案 2 :(得分:-2)

您需要以正确的顺序传递依赖关系,

myApp.controller('myComtroller', [
         '$scope','$http', '$timeout', 'moment', 
function ($scope , $http ,  $timeout,   moment) {
    var now = moment();
    console.log(now);
}]);

您不需要将时刻服务作为依赖项传递,您可以执行以下操作,

myapp.controller("myComtroller", function($scope) {
$scope.date = moment();       
});

<强> DEMO