在 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 中制作工厂模块的正确方法 的相关文章

  • 如何在数据表角度中基于 JSON 动态填充表值?

    我在用着Angular 数据表 https l lin github io angular datatables 我需要能够根据返回的数据动态创建表 换句话说 我不想指定列标题 Example json数据 id 2 city Baltim
  • $http post 未与 asp.net MVC 模型绑定

    为什么 angularjs http post 的有效负载没有绑定到输入模型 当调用该操作时 模型为空 并且 request params 和 request forms 不显示发送表单的任何迹象 但 fiddler 请求显示负载是通过 J
  • AngularJS 忽略一些标头

    我正在玩一点 Angular 遇到了一个小问题 我正在尝试为http响应设置一个自定义标头 然后在角度方面读取它的值 标头已设置 我确信这一点 因为 chrome 的调试工具确认了 这意味着服务器端没问题 到目前为止 一切都很好 当我尝试通
  • 加载 angularjs 路由后运行 javascript 代码

    我需要在 angularjs 加载路线后显示警报 显示警报的代码位于 angularjs 异步加载的视图中 视图加载后 我希望它能够运行 但它没有 我知道我可以广播并告诉它稍后运行等 但我需要一个更通用的解决方案 假设您正在谈论基于以下内容
  • 使用 AngularJs NgResource 从本地主机加载 JSON 文件

    Overview 我正在构建一个应用程序 在 MAMP 上运行 该应用程序包含联系信息 一旦该部分正常运行 该应用程序将扩展以包含更多数据 例如项目名称和截止日期 问题 当用户访问时 projects php project 我希望他们看到
  • 无头镀铬:镀铬无法到达

    我正在使用 Chrome headless 来运行量角器测试 它运行了一段时间 但之后我收到以下错误 15 36 30 E 启动器 chrome 无法访问 会话信息 无头 chrome 59 0 3071 115 驱动程序信息 chrome
  • 从 Angular 2 和 Silverlight 应用程序使用相同的 WCF 服务

    目前 我们有一个带有 WCF 服务 后端 的 Silverlight 应用程序 前端 现在 我们将用 Angular 2 应用程序替换 Silverlight 应用程序 而不更改 WCF 服务 只有 UI 会发生变化 在开始使用 Angul
  • Angular 2.0 路由 - TS 2305 ...没有导出成员“ModulewithProviders”

    我正在关注一个角度2 0教程在 Angular JS 官方上site https angular io docs ts latest tutorial toh pt5 html并在路由练习结束时陷入困境 该代码上次有效 但前几天我点击 np
  • AngularJS 选择元素设置所选索引

    所以我使用的是 Angular 这是我选择的 html
  • 使用 Protractor 检查浏览器控制台中没有错误

    我正在使用 Protractor 来测试 AngularJS 我想检查在测试结束时是否没有发生未捕获的异常并打印到浏览器控制台 有没有一种简单的方法可以做到这一点 如果您将 Protractor 与 Jasmine 一起使用 请使用以下代码
  • Angular ui-select 标记在模糊时丢失文本输入

    情况 大家好 我在用Angular ui 选择 https github com angular ui ui select对于我的应用程序 以便从数据库中选择用户 如果用户不在列表中 则可以使用标记来输入新条目 通过写入名称并按 ENTER
  • 以编程方式更改模型时,AngularJS 自定义验证不会触发

    我创建了一个自定义验证器 要求日期必须是过去的日期 当手动在字段中输入日期时 验证似乎效果很好 但是 如果我以编程方式输入更改日期 直接更改模型而不是在字段中键入 则验证不会触发 我相信我正在按照文档中的指示执行自定义验证指令 这是一个js
  • 单击元素外部时触发事件的指令

    我知道有很多问题都在问类似的事情 但没有人真正解决我的问题 我正在尝试构建一个指令 当鼠标单击当前元素外部时 该指令将执行表达式 为什么我需要这个功能 我正在构建一个应用程序 在这个应用程序中 有 3 个下拉菜单 5 个下拉列表 如选择的
  • 在 Jasmine 测试中配置 Angular 服务提供者

    我的服务有someModule module someModule provider someService function this options this get function return options 我正在编写规范 到目
  • 如何使用 Vert.x 2.x 启用 CORS

    我正在尝试使用 Angularjs 1 4 5 发出跨域请求 但无法获得成功 我已经配置了 httpprovider config httpProvider function httpProvider httpProvider defaul
  • Angularjs 路由:无法读取未定义的属性“路径”

    我试图在控制器中的函数内部触发 angularJS 路由 但它返回 未捕获的类型错误 无法读取未定义的属性 路径 实在看不出我在哪里错过了 location 注入 猜猜这就是原因 var gameApp angular module gam
  • AngularJS 服务返回未定义

    我有以下服务 app services emailService http sce function http sce return getMessage function messageId callback http get api e
  • 从动态 JSON 数据级联父子选择框

    我已经从服务器接收到的 JSON 数据动态创建了一些链接选择框 链接 级联的工作方式是每个选择框都是具有以下属性的命名对象 父属性 作为该选择框对象的父对象的名称 选项 选项对象数组 其中每个对象包含 a 选项值 b 父选项值 当前值映射到
  • 尝试为每一行编写测试用例

    已经编写了跳跃方法的测试用例 但当我看到代码覆盖率报告时 它不会进入onloadend方法seat onloadend 在 createSpyObj 中我调用了 loadend 但它仍然没有进入内部 你们能告诉我如何解决它吗 下面提供我的代
  • 通过 Angular 4 进行的 Bootstrap 4 轮播的动态填充不显示图像

    我试图通过 ngFor 迭代包含图像 url 的字符串数组来动态填充 Bootstrap 4 轮播 轮播不显示图像 尽管查看生成的标记一切看起来都很好 我猜测该组件是在 Angular 添加每张幻灯片的 div 之前渲染的 因为 轮播幻灯片

随机推荐