在angularJs中制作工厂模块的正确方法

时间:2014-08-06 14:51:26

标签: angularjs angularjs-factory

我有一个像这样的控制器功能:

$scope.localTimezone = function (userTimezone,datetime) {
  // ....
  return data;
}

将它作为工厂模块的正确方法是什么?我尝试了以下但是它给出了错误。

angular.module('localTimezone',  [])
   .factory('localTimezone',function(userTimezone,datetime) {
      // ...
      return data;
   });


angular.module('app', ['localTimezone'])
   .controller('tasksController',function ($scope,localTimezone) {
     // ...
   });

我错过了一些概念或逻辑。任何人都可以指出我正确的方向吗?

2 个答案:

答案 0 :(得分:2)

CONTROLLER示例 坏:

function MainCtrl () {
  this.doSomething = function () {

  };
}
angular
  .module('app')
  .controller('MainCtrl', MainCtrl);

好:

function MainCtrl (SomeService) {
  this.doSomething = SomeService.doSomething;
}
angular
  .module('app')
  .controller('MainCtrl', MainCtrl);

工厂示例 坏:

function AnotherService () {

  var someValue = '';

  var someMethod = function () {

  };

  return {
    someValue: someValue,
    someMethod: someMethod
  };

}
angular
  .module('app')
  .factory('AnotherService', AnotherService);

好:

function AnotherService () {

  var AnotherService = {};

  AnotherService.someValue = '';

  AnotherService.someMethod = function () {

  };

  return AnotherService;
}
angular
  .module('app')
  .factory('AnotherService', AnotherService);

有关详情指南,请浏览此博客: Opinionated AngularJS styleguide for teams

答案 1 :(得分:0)

这是一个基于假设的工作代码示例userTimezone和datetime是localTimezone模块的一部分服务。

以下内容已被修改

  • '数据'您的工厂返回的产品已被修改为根据工厂模式返回一个字符串 - 当您返回时,数据'什么都没引用
  • 构建应用程序已移至顶部。此代码应在其他任何内容之前执行。
  • 移除了app变量 - 我不喜欢全局变量。

代码:

angular.module('app', ['localTimezone']);

angular.module('localTimezone', []).factory('localTimezone',
  function(userTimezone, datetime) {
    var data = 'hello';
    return { data: data } ;
  });

angular.module('localTimezone').service('userTimezone', function() {
});

angular.module('localTimezone').service('datetime', function() {
});

angular.module('app').controller('tasksController',function ($scope,localTimezone) {
});  

Codepen:http://codepen.io/anon/pen/wijmb(控制台中没有出现错误)

请查看http://angular-tips.com/blog/2013/08/understanding-service-types,了解有关Angular中不同服务类型的信息。