问题标签 [angular-services]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6650 浏览

javascript - 在 Angular 服务中扩展基类

我有一个基类,我想在服务中扩展它以帮助将数据放入角度范围。我在网上搜索了解决方案,但没有找到我喜欢的解决方案。我有一个用于访问设备文件系统的基类

类结构:

我希望能够在几个不同的角度服务(即offlineCart、offlineCustomLists 等)中扩展这个类,其中每个服务都可以使用存储库来存储各种不同的数据类型。我正在寻找最好,最合适的方式来做到这一点。在 vanilla JavaScript 中,人们只会做这样的事情:

但我想以有角度的方式做同样的事情。

我一直在考虑的方法是使用 angular.extend 功能,但我不确定这是否合适,或者这样的方法是否更合适:

如果这些方法是正确的,或者是否有另一种更适合我想要完成的方法,我想要一些建议。我也希望或者宁愿需要在大部分代码中使用 Promise,因为它是异步的。

0 投票
3 回答
3379 浏览

angularjs - 角度访问范围数据到工厂?

我有一种情况,我从服务中获取滚动数据。现在我需要使用流行数据和最新帖子过滤数据

这是我的服务:

在控制器中:

html

所以通过这些点击我需要订购数据。我必须根据用户点击进行http调用来获取数据。

我在想我可以制作一个定义列表类型的范围数据并在工厂中获取它。

我如何在 Serviec Factory 中注入这个范围。我已经使用 rootscope 进行了尝试。最初列表类型设置为 latest ,但它显示未定义。那么实现这一目标的最佳方法是什么?

更新

现在我可以在角度服务中访问范围数据,但是这里出现的小问题是在列表中单击范围内的上一个项目不会为空,并且新项目会被推入范围。

因此,需求在列表中单击以前的数据变为零,新的数据被推入范围。

0 投票
1 回答
585 浏览

javascript - 在 Angular JS 中根据控制器逻辑创建服务

我目前有很多重复的逻辑,我需要在许多不同的控制器中使用它们,我正在寻找一种方法来拥有更 DRY 的做事方法。

例如,我目前有大约 12 个控制器使用延迟加载函数,每个控制器都使用该函数。每当我想调整该功能时,我必须通过所有 12 个(我知道不聪明!)这是一个常见版本的样子:

正如你所看到的,如果没有这个功能,我将拥有一个更清晰、更易读的控制器,其中很多业务逻辑都移到了服务中。IE:

问题是我不确定如何将其转化为可重复使用的甲酸盐。我刚开始:

但是我不确定我是否应该传递 $scope 或如何处理不同的资源,因为并非所有内容都是 scope.activities 或者我可能不需要传递 channelID: scope.number 作为参数。像这样的东西是如何结构化的?

0 投票
1 回答
1236 浏览

angularjs - 在真实页面刷新时执行函数

有没有办法只在页面刷新时在控制器中执行一个功能,而不是去另一个 ng-view?

我看到了列表中的项目。当我单击其中一个项目时,它会转到详细信息页面,在该页面中我将数据传递给服务并将其返回到详细信息页面,因此我不必调用另一个 $http 请求来获取单个项目数据。

这可行,但是当我点击 f5 时,我想执行一个函数来执行 $http 请求以获取项目数据。当我按 f5 时,数据当然不再在服务中了。

提前致谢!

0 投票
2 回答
51 浏览

angularjs - 工厂/服务本质

我试图了解服务和工厂之间的本质区别是什么(在 AngularJS 中)。每次调用时都说工厂是单例,服务是新对象,这是真的吗?

0 投票
2 回答
116 浏览

angularjs - 将数据源与 $resource 一起使用时报告错误

我创建了一个工厂来为我的应用程序提供数据

我已将数据访问从使用 $http、$q 更改为使用 $resource 为:

旧的实现

新的实施

现在,如果在获取我的数据时出现错误,我想显示一个错误。

所以当我有旧的实现时,我有两个回调要连接,现在我不确定如何实现它。我的想法是:

});

问题

连接 $resource 成功/失败的正确方法是什么?

可能的答案

添加成功和失败的回调函数,但我不认为这是解决方案。

0 投票
3 回答
783 浏览

angularjs - AngularJS - 将功能转移到服务

我的控制器中有一个函数,我正在尝试将其重写为服务。

该函数读取从 HTML 传入的值的长度(从 1 到 12)。如果传入的值少于 12 个,该函数会计算少了多少并将剩余的数字显示为空单元格。

HTML:

我的 JS 函数:

我的新服务:

我从控制器调用新服务:

但是,空单元格不再显示。

这是我的工作小提琴(使用函数时(服务代码已注释掉):http: //jsfiddle.net/oampz/GkarV/367/

0 投票
2 回答
86 浏览

angularjs - 从服务参数执行范围函数

当我可以设置表单提交时,我正在尝试创建服务。

例如。在控制器 AI 中调用“service.setFormSubmit(doThis(obj))”,在控制器 BI 中调用“service.getFormSubmit()”。它将在控制器 B 中执行函数 doThis(obj) 的位置。

更新 - 重新制定的问题。

我有 1 个要在其中编辑或创建类别的视图。这意味着我需要一个动态的 ng-submit。我想在控制器中这样做。所以像这样:

在创建时,我当然想将 formSubmit var 更改为 createCategory。所以我可以在创建和编辑类别之间有所作为。

这可能吗?如果有人有办法做到这一点,那就太好了..!

提前致谢!

0 投票
1 回答
52268 浏览

angularjs - Angular 搜索 JSON 中的值并显示相应的数据

我想做的很简单。用户输入一个值,单击按钮时,我的 JS 调用一个服务来检索我的 JSON 数据并针对 JSON 输入的值执行搜索,如果找到匹配项,则显示“所有者”。

HTML:

JS:

我的 JSON:

这是我的小提琴:http: //jsfiddle.net/oampz/7bB6A/

我可以调用我的服务,并从 JSON 中检索数据,但我被困在如何根据输入的值对检索到的数据执行搜索。

谢谢


更新:

以下查找输入的序列号:

我可以通过显示找到的序列号,console.log("Serial: " + key);但尝试将 Ownerconsole.log("Owner: " + key.Owner);显示为Undefined

0 投票
1 回答
11455 浏览

javascript - sessionStorage 数据不会通过 ngStorage 保存在 AngularJS 应用程序中

全部,

我只是想将用户对象存储在 AngularJS 应用程序的 sessionStorage 中。如果我在 Chrome 或 FF 调试器中逐步执行此操作,则 sessionStorage 永远不会设置。这是我的角度服务代码:

而且,这是一个显示我的 FF 调试会话的屏幕截图。您可以看到调用persistSession 后,$sessionStorage 有我的用户。

调试器

但是,如果我切换到 DOM 检查器,sessionStorage 中没有任何项目......

DOM

一如既往地感谢任何帮助。