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

2024-03-08

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

$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) {
     // ...
   });

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


控制器示例 坏的:

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

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

Good:

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

Good:

function AnotherService () {

  var AnotherService = {};

  AnotherService.someValue = '';

  AnotherService.someMethod = function () {

  };

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

有关详细指南,请浏览此博客:针对团队的 AngularJS 风格指南 http://toddmotto.com/opinionated-angular-js-styleguide-for-teams/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 AngularJs 中制作工厂模块的正确方法 的相关文章

随机推荐