我试图通过遵循工厂方法文档中的示例来构build自己的服务。 我认为我做了错误的事情,但因为我继续得到未知的提供商错误。 这是我的应用程序的代码,包括声明,configuration和工厂定义。 编辑我已经添加了所有的文件来帮助排除故障 编辑错误的全部细节下面的问题似乎与getSettings,因为它正在寻找getSettingsProvider,找不到 Error: [$injector:unpr] http://errors.angularjs.org/1.2.16/$injector/unpr? p0=getSettingsProvider%20%3C-%20getSettings at Error (native) at http://localhost/sw/selfservice/bower_components/angular/angular.min.js:6:450 at http://localhost/sw/selfservice/bower_components/angular/angular.min.js:35:431 at Object.c [as get] (http://localhost/sw/selfservice/bower_components/angular/angular.min.js:34:13) at http://localhost/sw/selfservice/bower_components/angular/angular.min.js:35:499 at c (http://localhost/sw/selfservice/bower_components/angular/angular.min.js:34:13) at d (http://localhost/sw/selfservice/bower_components/angular/angular.min.js:34:230) at Object.instantiate (http://localhost/sw/selfservice/bower_components/angular/angular.min.js:34:394) at http://localhost/sw/selfservice/bower_components/angular/angular.min.js:66:112 at http://localhost/sw/selfservice/bower_components/angular/angular.min.js:53:14 angular.js:9778 (anonymous function) angular.js:9778 (anonymous function) angular.js:7216 h.$apply angular.js:12512 (anonymous function) angular.js:1382 d angular.js:3869 $bc angular.js:1380 $b angular.js:1394 Wc […]
如何创build一些可以从我的所有控制器访问的utils bundle? 我在主模块中有这个路由代码: 'use strict'; angular.module('lpConnect', []). config(['$routeProvider', function($routeProvider) { $routeProvider. when('/home', {template: 'views/home.html', controller: HomeCtrl}). when('/admin', {template: 'views/admin.html', controller: AdminCtrl}). when('/connect', {template: 'views/fb_connect.html', controller: MainAppCtrl}). otherwise({redirectTo: '/connect'}); }]); 我想要一个HomeCtrl , AdminCtrl和MainAppCtrl通用的函数。 我应该怎么做AngularJS?
我正在使用Angular UI引导模式对话框并在服务中创build它: myApp.factory('ModalService', ['$modal', function($modal) { return { trigger: function(template) { $modal.open({ templateUrl: template, size: 'lg', controller: function($scope, $modalInstance) { $scope.ok = function() { $modalInstance.close($scope.selected.item); }; $scope.cancel = function() { $modalInstance.dismiss('cancel'); }; } }); }, close: function() { // this should close all modal instances } }; }]); 如何从控制器调用ModalService.close()时closures所有的模态实例?
是否有可能build立一个服务内的对象数组$watch (我希望$watch声明本身在服务内)?
我在我的项目中使用Angular UI $ modal http://angular-ui.github.io/bootstrap/#/modal 我不希望用户通过按背景来closures模式。 我想要一个模式只能通过按下我已经创build的closuresbutton来closures。 如何防止模式closures?
是否有可能在angularJS注入一个服务到另一个服务?
在下面的示例testing中,原始的提供者名称是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); }); }); 什么是约会我错过了一个更好的解释?
我对angularJS很新。 我正在寻找从RESTful API访问服务,但我没有任何想法。 我怎样才能做到这一点?
编辑2016年1月:由于这仍然得到关注。 既然问了这个问题,我已经完成了几个AngularJS项目,对于那些我主要使用factory ,build立了一个对象,最后返回了对象。 但是,下面的陈述仍然是正确的。 编辑:我想我终于明白了两者之间的主要区别,我有一个代码示例来演示。 我也认为这个问题是不同的build议重复。 重复说服务是不可实例化的,但是如果你按照我下面的演示来设置它,那实际上是这样的。 可以将服务设置为与工厂完全相同。 我还将提供代码,显示工厂故障转移服务,这似乎没有其他答案。 如果我像这样设置VaderService(即作为服务): var module = angular.module('MyApp.services', []); module.service('VaderService', function() { this.speak = function (name) { return 'Join the dark side ' + name; } }); 然后在我的控制器中,我可以这样做: module.controller('StarWarsController', function($scope, VaderService) { $scope.luke = VaderService.speak('luke'); }); 使用服务,注入到控制器的VaderService被实例化,所以我可以调用VaderService.speak,但是如果我将VaderService更改为module.factory, 控制器中的代码将不再工作 ,这是主要区别。 在工厂中,注入到控制器中的VaderService 没有被实例化,这就是为什么在build立一个工厂时需要返回一个对象(参见我的示例)。 但是,您可以使用与build立工厂完全相同的方式来设置服务(IE会返回一个对象), 并且服务的行为与工厂完全相同 有了这些信息,我没有理由使用工厂的服务,服务可以做一切工厂可以和更多。 下面的原始问题。 我知道这已经被问及时间的负载,但我真的不能看到工厂和服务之间的任何function差异。 我读过这个教程: http : […]
你如何pipe理不同环境的configurationvariables/常量? 这可能是一个例子: 我的rest API在localhost:7080/myapi/上是可以访问的,但是我的朋友在Git版本控制下的相同代码上已经在localhost:8099/hisapi/上的Tomcat上部署了API。 假设我们有这样的事情: angular .module('app', ['ngResource']) .constant('API_END_POINT','<local_end_point>') .factory('User', function($resource, API_END_POINT) { return $resource(API_END_POINT + 'user'); }); 我如何根据环境dynamic地注入API端点的正确值? 在PHP中,我通常使用config.username.xml文件来完成这种工作,将基本configuration文件(config.xml)与由用户名称识别的本地环境configuration文件进行合并。 但我不知道如何在JavaScript中pipe理这种事情?