将依赖项注入角度工厂并访问依赖项

时间:2014-03-25 22:00:23

标签: angularjs angularjs-factory

我已经添加了bower the angular-moment库。

我按照角度作者的方法进行操作,并将两个脚本添加到我的index.html文件和karma.conf.js文件中,其中包含files选项,包括某些文件。

如何在我的app / dateFactory中访问角度矩对象来做时间?

应用/ dateFactory

'use strict';

angular.module('clientApp', ['angularMoment']).factory('dateFactory', function () {


    function dateRange(startDate, endDate) {


    }

    // Public API here
    return {
        dateRange: dateRange
    }
});

UPDATE =>运行此代码定义了工厂实例!

angular.module('clientApp').factory('dateFactory', function() {
    function dateRange(startDate, endDate) {
       var bla = moment.format()

        return [];
        //return Enumerable.range(0, endDate.Subtract(startDate).Days + 1).Select(offset => startDate.AddDays(offset)).toArray();
    }

    // Public API here
    return {
        dateRange: dateRange
    }
});

UPDATE =>运行此代码时,工厂实例未定义!

angular.module('clientApp', ['angularMoment']).factory('dateFactory', ['moment', function(moment) {
    function dateRange(startDate, endDate) {


        moment.format() //for example

        return [];
        //return Enumerable.range(0, endDate.Subtract(startDate).Days + 1).Select(offset => startDate.AddDays(offset)).toArray();
    }

    // Public API here
    return {
        dateRange: dateRange
    }
}]);

这就是工厂的创建方式:

describe('Service: dateFactory', function () {

  // load the service's module
  beforeEach(module('clientApp'));

  // instantiate service
  var dateFactory;
  beforeEach(inject(function (_dateFactory_) {
    dateFactory = _dateFactory_;
  }));

  it('should do something', function () {

      var data = dateFactory.dateRange(new Date(2014,1,1), new Date(2014,1,15));

    expect(!!dateFactory).toBe(true);
  });

});

1 个答案:

答案 0 :(得分:3)

你可以注入这个时刻'全球进入你的工厂。

'use strict';

angular.module('clientApp', ['angularMoment']).factory('dateFactory', ['moment', function(moment) {
    function dateRange(startDate, endDate) {
        moment.format() //for example

    }

    // Public API here
    return {
        dateRange: dateRange
    }
}]);