问题标签 [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 投票
1 回答
5389 浏览

javascript - How to create Dynamic factory in Angular js?

In my project i have to create dynamic factory in angular js with dynamic factory name like below

I want to get new factory with dynamic name , when i called this function. unfortunately this is not working. how can i achieve this? and how to inject in my controller or in directive dynamically?

0 投票
4 回答
1088 浏览

angularjs - 如何使用 Angular.js 发出 HTTP 请求?

我正在尝试使用 Angular.js 向 Last.fm API 发出 HTTP 请求,但我无法让它工作。我已经分离出我的 Angular js 文件,并使用 Codekit 将它们编译成一个名为 scripts.js 的单个 js 文件。编译文件的顺序是:

  • angular.min.js
  • 应用程序.js
  • 控制器.js
  • 服务.js

这是我的文件的样子:

应用程序.js

控制器.js

服务.js

索引.html

在我的控制台中,我看到“错误:[$injector:unpr]”,我了解到这意味着控制器无法解析依赖项。就我而言,我相信它与我正在注入的服务有关,但我不知道错误在哪里。

0 投票
2 回答
291 浏览

javascript - 无法从自定义服务返回对 AngularJS 范围的引用

情节...

我需要更新存储在当前作用域的祖父作用域的属性中的数据。当然,如果我尝试简单地写入该属性,它不会更新祖父作用域,而是将属性添加到当前作用域。

解决方案 ...

构建一个实用程序服务,该服务托管一个函数,您将当前范围和您正在寻找的属性的名称传递给该函数。这将递归查找当前范围的父链,直到找到正在查找的属性的“hasOwnProperty”范围。然后它将返回对该范围的引用。

结果...

当我从控制台运行服务时,我得到了一些奇怪的行为。我有一些用于跟踪服务有效性的 console.log 标记。每个日志输出都是完美的,完全符合您的期望,即使是在 return 语句日志之前的 console.log,也可以像您期望的那样输出到控制台,但是...... return 语句返回“未定义”...... ?? ?

这是服务代码...

关于为什么没有返回范围的任何想法?

提前致谢 :)

编辑

感谢杰夫的回答!!

关于 invarni 的建议,如果我试图使一个值可用于当前范围而不“隐藏”祖父母的值,它肯定会起作用。然而,问题是祖父母范围将是应用程序中许多其他范围的祖父母。我需要对不同视图中的其他后代范围可用的一个后代范围中的数据进行任何更新。所以想法是,如果我更改祖父范围,它将持续存在,并且由于原型继承可用于其他后代范围。如果有人知道更好的方法或看到这个概念的缺陷,请告诉我!!

再次感谢你的反馈!

0 投票
1 回答
2889 浏览

angularjs - AngularJS:在服务中传递变量

我正在尝试将我的登录逻辑移动到服务..但我不知道如何将登录详细信息传递给服务。

我有:

我正在尝试做的事情:

1. 有一项服务可以查看详细信息并获取用户的个人资料...

...但是当用户点击登录时,用用户详细信息替换userNameVarpasswordVar

我试着{userName: login_username, password: login_password}userProfile.getUserProfile()这样插入userProfile.getUserProfile({userName: login_username, password: login_password})

0 投票
2 回答
303 浏览

angularjs - 从另一个控制器 Angular 更新控制器

我的页面上有两个处于活动状态的控制器:

两个控制器都从此服务中提取:

第二个控制器更新第一个控制器引用的“标题”。我的问题是,一旦第二个控制器更改了服务中的“标题”,第一个控制器就不会更新以反映更改。我认为需要发生的是如何刷新第一个控制器以引入这些新更改。关于如何做到这一点的任何建议?

0 投票
1 回答
1264 浏览

angularjs - 如何根据自身配置Angular中的$http服务?

我正在尝试配置$httpAngular 的服务,以在状态码为 403 时重定向到 URL。

到目前为止没有问题,但是要重定向到的 URL 来自服务器,通过正在使用的服务$http(显然)。

这是一段代码:

此代码在 Angular 中创建循环依赖项(错误)。

有没有一种方法可以做到这一点,具有来自服务器的动态 URL,并基于此在response.status403 时将用户重定向到其中一个?

0 投票
2 回答
1490 浏览

javascript - 将会话数据与其他角度指令和控制器同步

在我的 AngularJS 应用程序中,我有一个 Session 服务对象,其中包含当前用户、他们的偏好、他们所属的当前公司以及他们正在使用的当前主题等内容。我的应用程序中的许多地方在需要获取这些数据时都引用了 Session 服务。

因为这些变量在服务中,所以我不能使用范围监视来检测更改。因此,我决定使用观察者模式。应用程序中的各个地方,例如其他服务、指令、控制器等,都会向 Session 服务注册自己,并在 Session 发生变化时提供回调来执行。

例如,如果用户更改了他们的主题,使用自定义指令的<style>元素index.html将被通知,并且它将为新颜色重新创建所有覆盖的 css 规则。

再比如,每当用户头像更新时,都会通知主菜单栏控制器刷新并重绘头像。像这样的东西。

显然,在各种控制器、指令等使用之前,Session 中的数据必须至少刷新一次。要求会话服务获取其会话数据的自然位置是run应用程序级模块的块中。这工作得很好,但我认为这也不是最好的地方。

我注意到的一个问题是,当 Firebug 打开时,加载的异步特性会导致排序问题。例如,在<style>元素上运行的指令将在应用程序的运行块中刷新会话服务之后运行……这意味着按 F5 后主题不会更新,因为回调是在数据初始化后注册的。我必须在这里调用手动刷新以保持同步,但如果我这样做了,它可能会在顺序不同的时候执行两次!这是个大问题。我不认为这个问题只与 Firebug 相关......它可能在任何情况下发生,但 Firebug 似乎总是会导致它,这很糟糕。

回顾一下......这个异步排序很好:

  1. 主题指令注册回调到 Session
  2. 菜单栏应用程序控制器向 Session 注册回调
  3. .runSession.refresh() 在块中调用。

这种异步排序很糟糕:

  1. 菜单栏应用程序控制器向 Session 注册回调
  2. .runSession.refresh() 在块中调用。
  3. 主题指令向 Session 注册回调,但由于 Session.refresh() 已经执行,回调没有被执行。

因此,与其使用观察者模式,或者通过run块刷新会话状态,不如设计服务的最佳方式等等,以便会话数据总是在应用程序的各个其他部分之后(或之前)被刷新需要吗?在执行指令和控制器而不是运行块之前,我是否可以挂钩某种事件?

如果我的方法总体上是合理的,我可以添加什么来真正让它按应有的方式工作?

谢谢!

0 投票
1 回答
155 浏览

javascript - Angularjs 中从控制器到服务再到指令的值

我的 AngularJS 网络应用程序需要(您可能猜到)有时会显示模式弹出窗口。在学习 AngularJS 之前,我曾经使用命名空间来集中我的代码,并且我通常将所有 UI 内容放在适当的命名空间中,例如:MyProj.UI.Dialogs.Modal.show()(只是一个示例)。

现在我,尝试在 AngularJS 中应用相同的逻辑。所以,我创建了一个指令

使用以下模板:

所以我可以在我的 html 中使用模态标记。

现在,为了控制模态行为,我想使用service,例如:

我会从任何控制器使用它:

但我的问题是:如何将值从控制器传递到服务,再到指令?

0 投票
1 回答
204 浏览

angularjs - 使用资源获取 json 库存 ID

我无法从我的 json api 获取和 ID,我该怎么做?我$scope.info.id在我的删除功能中这样做,但 id 不是那样工作的。

这是我的删除功能

这是我的工厂

这是我的api

0 投票
1 回答
3717 浏览

angularjs - 如何使用 AngularJS 下载文件?

我想在<a></a>单击它时列出所有文件,我们需要从相应的文件夹中下载它。

我尝试了以下代码

我怎样才能做到这一点?

谁能帮我?