AngularJS: Как правильно передать в moment.js зависимость?

У меня есть app.jsгде я объявил свою переменную / модуль приложения:

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>

В этой последовательности. (контроллер выполняется позже, часть скриптов раздела для этого представления)

Я установил moment.js загрузив его отсюда: http://momentjs.com/docs/

Но я установил angular-moment зависимость через bower,

Какие-либо предложения?

3 ответа

Решение

Вам не хватает некоторых зависимостей в аннотации зависимостей.

Пытаться:

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

Кроме того, я бы рекомендовал использовать ng-annotate для автоматической обработки аннотаций DI.

посмотри на 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);
});

Вы должны передать зависимости в правильном порядке,

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

Другие вопросы по тегам