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();
});