在AngularJS服务中加载模块

时间:2014-08-18 18:33:40

标签: javascript angularjs

我正在学习AngularJS。目前,我正在尝试在我的服务中加载第三方模块。具体来说,我正在尝试加载angular-moment。我的服务定义如下:

myApp.factory('myService', ['angularMoment', function(angularMoment) {
  return {
    getLocale: function() {
      return angularMoment.locale();
    }
  }
}]);

如果我将angularMoment.locale()替换为return 'someLocale';我的代码运行。但是,一旦我引用angularMoment,我就会收到错误。我知道这与我没有正确加载模块的事实有关。但是,我不知道我做错了什么。我在运行单元测试时只看到这个错误:

Error: [$injector:unpr] http://errors.angularjs.org/1.2.22/$injector/unpr?p0=angularMomentProvider%20%3C-%20angularMoment%20%3C-myService (line 36) (1)

我做错了什么?

4 个答案:

答案 0 :(得分:2)

尝试'时刻'而不是服务/因子注入器中的angularMoment。这将为您提供MomentJS

中的对象
myApp.factory('myService', ['moment', function(moment) {
  return {
    getLocale: function() {
      return moment.locale();
    }
  }
}]);

答案 1 :(得分:0)

在声明模块时,您需要引用angularMoment模块。否则它将无法加载。这就是导致$injector:unpr错误的原因。所以你需要这样的东西:

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

答案 2 :(得分:0)

这听起来很基本,但是你在html代码中引用了.js文件,对吗?

答案 3 :(得分:0)

这对我有用:



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

app.controller('myCtrl', function($scope, $log, moment) {
      var now = moment();
      $log.info(now.format("dddd, MMMM Do YYYY, h:mm:ss a"));
});