问题标签 [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 回答
126 浏览

javascript - AngularJS 服务无法正常工作

我想在我的 webapp 中创建动态页面标题。我创建了应该可以帮助我的服务,但它不起作用。PageTitleService.getTitle() 总是返回 undefined。有什么不对吗?运行此代码应该纠正什么?这是代码:

应用程序.js

PageTitleService.js:

应用控制器.js

PageContorller.js

index.html(开始):

0 投票
1 回答
1893 浏览

angularjs - AngularJS:用工厂控制服务数据

我试图从两个单独的控制器“控制”工厂中的数据,虽然下面的代码工作正常,但它并不总是有效。无论出于何种原因,它仅在大约 50% 的时间绑定数据。有没有办法确保数据始终被绑定,并且如果任一控制器对数据进行编辑,则更改将反映在两端。

服务:

工厂:

控制器:

如果有更好的方法可以做到这一点,这样我就不必在工厂中设置数据了。不必在控制器中处理 promise 对象也很好,但我认为不可能在工厂中获取数据。

使用上述工厂设置数据后,我使用以下代码在不同的控制器中访问它:

最终,我希望能够从两个控制器访问相同的变化数据。上述方法有效,但仅在某些时候有效,我不确定没有设置什么。

$scope.$watch编辑:通过在回调函数上使用控制器中的功能,我能够让它一直工作。数据是绑定的,但是 angular 需要知道要注意什么,如下面的答案中所建议的那样。

0 投票
2 回答
1298 浏览

javascript - 在 angularjs 中找不到服务

我收到一个错误,AuthFilter在 angularjs 中找不到该服务。此处为 jsfiddle 示例:http: //jsfiddle.net/F5dhg/。我无法弄清楚为什么注入器找不到该服务,因为它显然存在。此外,如果我包含$injectorconfig块中(而不是AuthFilter),$injector.get('AuthFilter')我会得到相同的错误,但如果$injector.has('AuthFilter')我得到true,并且如果我再次$injector.get('AuthFilter')得到循环依赖错误。我对 angularjs 还很陌生,如果我能在解决这个问题上得到任何帮助,我将不胜感激。

0 投票
1 回答
244 浏览

angularjs - 在配置功能期间服务范围如何?

我很好地读了这篇文章

Angular.js 中可以将哪些“东西”注入其他人?

并且很好奇,因为有人告诉我使用 resolve 属性来制作 xhr 并使用服务来帮助处理这些调用。此代码中的 resolve 属性如何工作?$injector 在什么时候被调用?

0 投票
2 回答
2867 浏览

jquery - 如何在 Angular 服务中使用 jQuery.cookie 插件

我一直在尝试使用ngCookie在我的应用程序中存储和检索 cookie。由于我无法设置使用 创建的 cookie 的路径或过期时间,因此ngCookie我不得不寻找其他地方。

所以我正在尝试使用这个jQuery cookie 插件

但是,我不知道如何使其在 Angular 服务中可用。围绕如何使 jQuery 插件在控制器和服务中可用,答案一致指向使用指令,但我认为在这种情况下这不是正确的方法,因为 cookie 是控制器和服务应该知道的。

那么,如何让 jQuery 插件可用于 Angular 服务呢?

0 投票
0 回答
140 浏览

javascript - 从角度更新服务视图?

也许我设计不正确(新的角度)。目前我有这样的事情:

[TVController] depends on [TVService]

[TVService] depends on [GameShowChannel] #could possibly have more channels

在代码中它是这样的:

html

TVController.js

TVService.js

GameShowChannelService.js

GameShowChannelService.js我希望能够更新game_show_intro.html. 我GameShowIntroController在文件中有一个对象,但我无法将它导入到GameShowChannelService.js. 这个问题有更好的解决方案吗?问题再次是我希望能够更新GameShowChannelService. 我想要GameShowChannelService不仅仅是一个静态的 html,而是动态的,这样我就可以在那个频道中真正“播放”一些东西。希望它足够清楚。


嗯..也许 GameShowChannel 应该是一个指令?

另一个想法是从服务中广播某些状态已更改的事件,并且控制 game_show_intr.html 视图的 GameShowIntroController 将相应地侦听并更新到该状态。这会是一种角度方法吗?

0 投票
1 回答
276 浏览

javascript - 一个应用程序中多个模型对象的 Angular CRUD

我有一个 Angular 应用程序,它具有三个不同的业务对象,需要在所有这些对象上独立实现 CRUD 操作。我们称它们为 a,b,c。我有等效的 aCtrl、bCtrl、cCtrl 和 aSvc、bSvc、cSvc 来管理这些 CRUD 操作。所以在这个例子中,aCtrl 管理 'a' 的 CRUD。aSvc 通过 ajax 调用帮助将数据持久化到后端。我还有一个 allCtrl 和 allSvc,当应用程序第一次加载时,它将所有对象 a、b、c 从后端拉到一个 json 对象中(我没有单独拉它们,而是将后端设计为推送一个统一的 json 对象其中嵌入了 a,b,c。

“全部”对象

所以我坚持以一种直接有意义的方式构建应用程序。当应用程序第一次加载时,我将从后端的 allSvc 拉入“所有”对象。这包含执行 CRUD 所需的所有数据(当然我必须使其与后端保持同步)。当应用程序第一次加载时,我想列出“a”类型的对象,然后为用户提供编辑/删除/添加的选项。同样,我有下拉导航将用户带到对对象“b”、“c”执行完全相同的其他页面。

以下是我到目前为止所做的一些片段以及我如何悲惨地失败:)

索引.html

js

路线

一个Ctrl

我无法在此设计中有意义地设置 routeParams 以正确执行编辑/删除。我还必须考虑 userId(需要为其执行 CRUD 操作的登录用户)。如何更好地管理路线?我应该使用 /a/edit/userId/aId 之类的东西来编辑“a”和 /a/delete/userId/aId 来删除“a”吗?

请帮我擦亮这个粪便。

0 投票
2 回答
1073 浏览

javascript - AngularJs 身份验证服务行为异常

更新JS中的代码

我从angular-app借用了 auth (session) 服务,并对其进行了强烈修改:

这是一个应用程序:

所以,我猜,当应用程序启动时,请求了 currentUser(也许控制器在请求回调之前开始工作,但问题在其他地方)。接下来,控制器:

关键是,当用户登录时,isAuthenticated()总是false,但currentUser不是 null。所以,当我登录时,不仅$log.info显示currentUser: [object Object] ; isAuth: false网站刚刚加载时,而且当我也在导航时。当我注销时它显示currentUser: null ; isAuth: false。显然,currentUser在服务内部始终为空。但是我如何定义它才能改变值?

0 投票
0 回答
421 浏览

unit-testing - 无法对使用 $http 而不调用 scope.$digest 的服务进行单元测试

我的应用程序中有一项服务,它$http根据特定规范使用格式化请求。我一直在尝试对服务的方法运行单元测试,$httpBackend用于模拟响应。在测试使用$http.

我一直在遵循第一个答案中的模式: AngularJS - Testing service method that uses $http service

即,注册一个预期的请求$httpBackend,定义一个响应,调用感兴趣的服务方法,然后刷新后端模拟。

除非我在调用我感兴趣的服务方法后注入$rootScope、创建一个新范围并在其上运行 a ,否则我无法让它工作。$digest()这是我在测试使用 的控制器和指令时使用的模式$http,因为测试运行程序将指示没有待处理的刷新请求。但是,我没想到服务中有这个要求,因为scope对我来说没有多大意义。此外,上面链接的问题的答案并不表明这是明确必要的。

今天早上在角度源中闲逛了相当长的时间后,我确定已成功为我的服务请求创建了一个承诺对象,但在' 的调用中$http注册的承诺解决函数永远不会触发。只有当我在我的 servicesSpec 中添加一行来消化一个范围对象时,一切都会触发......$q.whennextTick()

这是一个已知的问题?我正在使用 v1.2.0rc2。是否有解决方法可以将测试服务与范围对象分离?

作为参考,这里是运行的规范代码:

0 投票
2 回答
172 浏览

javascript - 在 $http.get 调用中获取服务上下文

在下面的示例中,$http.get().success()调用中的上下文是undefined. 我想这是因为我使用“使用严格;” 这success()是一个常规功能。

但是我需要在函数调用中访问服务的上下文。实现这一目标的正确方法是什么?