Questions tagged «angularjs-service»

AngularJS服务是单例,可以执行Web应用程序共有的特定任务。AngularJS提供了一系列内置服务,并能够根据需要创建自定义服务。服务还用于通过依赖项注入(DI)在应用程序组件之间进行通信。


4
如何从控制台测试AngularJS服务?
我有类似的服务: angular.module('app').factory('ExampleService', function(){ this.f1 = function(world){ return 'Hello '+world; } return this; }) 我想从JavaScript控制台对其进行测试,然后调用f1()该服务的功能。 我怎样才能做到这一点?

9
AngularJS:何时使用服务而不是工厂
请在这里忍受我。我知道还有其他答案,例如: AngularJS:服务vs提供程序vs工厂 但是我仍然不知道您何时在工厂使用服务。 据我所知,工厂通常用于创建可被多个控制器调用的“通用”功能:创建通用控制器功能 Angular文档似乎更喜欢工厂而不是服务。他们甚至在使用工厂时也提到“服务”,这更加令人困惑!http://docs.angularjs.org/guide/dev_guide.services.creating_services 那么什么时候使用一项服务呢? 有什么事情是只能通过服务完成的? 幕后有什么不同吗?性能/内存差异? 这是一个例子。除了声明方法外,它们看起来是相同的,我不知道为什么要对彼此进行比较。http://jsfiddle.net/uEpkE/ 更新:从托马斯的答案看来,这似乎暗示服务是针对使用私有方法的更简单逻辑而工厂是针对更复杂的逻辑,因此我更新了下面的小提琴代码,似乎两者都能够支持私有功能? myApp.factory('fooFactory', function() { var fooVar; var addHi = function(foo){ fooVar = 'Hi '+foo; } return { setFoobar: function(foo){ addHi(foo); }, getFoobar:function(){ return fooVar; } }; }); myApp.service('fooService', function() { var fooVar; var addHi = function(foo){ fooVar = 'Hi '+foo;} this.setFoobar …

10
如何在Angular.js中配置不同的环境?
如何管理不同环境的配置变量/常量? 这可能是一个示例: 我的其余API可以访问localhost:7080/myapi/,但在Git版本控制下使用相同代码工作的朋友在Tomcat上已部署了该API localhost:8099/hisapi/。 假设我们有这样的东西: angular .module('app', ['ngResource']) .constant('API_END_POINT','<local_end_point>') .factory('User', function($resource, API_END_POINT) { return $resource(API_END_POINT + 'user'); }); 如何根据环境动态注入API端点的正确值? 在PHP中,我通常使用config.username.xml文件来执行此类操作,将基本​​配置文件(config.xml)与用户名称识别的本地环境配置文件合并。但是我不知道如何在JavaScript中管理这种事情?

10
AngularJS:绑定到服务属性的正确方法
我正在寻找有关如何绑定到AngularJS中的服务属性的最佳实践。 我已经研究了多个示例,以了解如何绑定到使用AngularJS创建的服务中的属性。 下面有两个关于如何绑定到服务中的属性的示例。他们都工作。第一个示例使用基本绑定,第二个示例使用$ scope。$ watch绑定到服务属性 当绑定到服务中的属性时,这些示例是首选还是建议使用其他我不知道的选项? 这些示例的前提是服务应每5秒更新其属性“ lastUpdated”和“ calls”。服务属性更新后,视图应反映这些更改。这两个示例均成功运行;我想知道是否有更好的方法。 基本绑定 可以在下面的代码中查看和运行以下代码:http : //plnkr.co/edit/d3c16z <html> <body ng-app="ServiceNotification" > <div ng-controller="TimerCtrl1" style="border-style:dotted"> TimerCtrl1 <br/> Last Updated: {{timerData.lastUpdated}}<br/> Last Updated: {{timerData.calls}}<br/> </div> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.js"></script> <script type="text/javascript"> var app = angular.module("ServiceNotification", []); function TimerCtrl1($scope, Timer) { $scope.timerData = Timer.data; }; app.factory("Timer", function ($timeout) { …

7
将模拟注入AngularJS服务
我写了一个AngularJS服务,我想对其进行单元测试。 angular.module('myServiceProvider', ['fooServiceProvider', 'barServiceProvider']). factory('myService', function ($http, fooService, barService) { this.something = function() { // Do something with the injected services }; return this; }); 我的app.js文件已注册: angular .module('myApp', ['fooServiceProvider','barServiceProvider','myServiceProvider'] ) 我可以测试DI是否像这样工作: describe("Using the DI framework", function() { beforeEach(module('fooServiceProvider')); beforeEach(module('barServiceProvider')); beforeEach(module('myServiceProvder')); var service; beforeEach(inject(function(fooService, barService, myService) { service=myService; })); it("can be …

24
Angularjs:错误:[ng:areq]参数'HomeController'不是一个函数,未定义
这是我使用angularjs进行的演示,用于创建服务文件并将服务添加到控制器。 我的演示有两个问题: 一种是<script src="HomeController.js">在<script src="MyService.js">我收到此错误之前, 错误:[ng:areq]参数'HomeController'不是一个函数,未定义 另一种是,当我把<script src="MyService.js">之前<script src="HomeController.js">我碰到下面的错误, 错误:[$ injector:unpr]未知提供程序:MyServiceProvider <-MyService 我的来源: 档案Index.html: <!DOCTYPE html> <html > <head lang="en">…</head> <body ng-app="myApp"> … <div ng-controller="HomeController"> <div ng-repeat="item in hello">{{item.id + item.name}}</div> </div> <script src="Scripts/angular.js"></script> <script src="Scripts/angular-route.js"></script> <!-- App libs --> <script src="app/app.js"></script> <script src="app/services/MyService.js"></script> <script src="app/controllers/HomeController.js"></script> </body> </html> 档案HomeController.js: (function(angular){ …

4
如何在angularjs中等待直到响应来自$ http请求?
我正在使用来自多个页面中RESTful服务的一些数据。所以我为此使用了角度工厂。因此,我需要从服务器获取一次数据,并且每次我通过该定义的服务获取数据。就像全局变量一样。这是示例: var myApp = angular.module('myservices', []); myApp.factory('myService', function($http) { $http({method:"GET", url:"/my/url"}).success(function(result){ return result; }); }); 在我的控制器中,我将此服务用作: function myFunction($scope, myService) { $scope.data = myService; console.log("data.name"+$scope.data.name); } 根据我的要求,它对我来说很好。但是这里的问题是,当我重新加载网页时,该服务将再次被调用并请求服务器。如果在其他函数之间执行依赖于“已定义的服务”的函数,则会给出错误消息,例如“未定义”。因此,我想在脚本中等待直到服务加载。我怎样才能做到这一点?无论如何,在angularjs中这样做吗?




1
_servicename_中的下划线在AngularJS测试中意味着什么?
在下面的示例测试中,原始提供程序名称为APIEndpointProvider,但是对于注入和服务实例化,似乎必须使用下划线将其注入。这是为什么? 'use strict'; describe('Provider: APIEndpointProvider', function () { beforeEach(module('myApp.providers')); var APIEndpointProvider; beforeEach(inject(function(_APIEndpointProvider_) { APIEndpointProvider = _APIEndpointProvider_; })); it('should do something', function () { expect(!!APIEndpointProvider).toBe(true); }); }); 我缺少更好的解释的约定是什么?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.