我想知道是否有办法在AngularJs中的服务中注入过滤器.
我一直在努力
app.factory('educationService', [function($rootScope, $filter) {
// ..... Some code
// What I want
console.log(dateFilter(new Date(), 'yyyy-MM-01'));
// ..... Some code
}]);
Run Code Online (Sandbox Code Playgroud)
所以我想知道是否可以在服务中注入过滤器,或者可以通过其他方式访问它.
如果你有关于这一点的文档的链接,那将是非常好的:)一直在Angular的文档中搜索,我发现没有什么真正有用的.
谢谢 :)
我有一些角度工厂,用于对传统的ASP.NET .asmx Web服务进行ajax调用,如下所示:
module.factory('productService', ["$http",
function ($http) {
return {
getSpecialProducts: function (data) {
return $http.post('/ajax/Products.asmx/GetSpecialProducs', data);
}
}
} ]);
Run Code Online (Sandbox Code Playgroud)
我正在本地网络上进行测试,因此响应时间"太"了.是否有一种聪明的方法可以将$ http延迟几秒钟来调用模拟连接错误?
或者我是否需要在$ timeout中包含对工厂方法的所有调用?
$timeout(function() {
productService.getSpecialProducs(data).success(success).error(error);
}, $scope.MOCK_ajaxDelay);
Run Code Online (Sandbox Code Playgroud) 我在Angular中有一个服务,它使用我的API获取用户信息并将其提供给我的控制器.它的设置如下:
angular.module('myApp', ['myApp.filters', 'myApp.services', 'myApp.directives', 'ngResource', 'infinite-scroll', 'ui.bootstrap', 'ngCookies', 'seo'])
.service('userInfo', function($http, $cookies){
$http.get('/api/users/' + $cookies.id).
success(function(data) {
var userInfo = data.user[0];
return userInfo;
});
}). // other stuff comes after this
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,我包括它:
function userProfile($scope, $cookies, userInfo, $http, $resource, $routeParams, $rootScope){
$scope.user = userInfo;
console.log('user info is')
console.log(userInfo);
Run Code Online (Sandbox Code Playgroud)
这没有返回数据,而如果我在控制器本身放置相同的服务功能,它返回就好了.我在这里错过了什么?从来没有在Angular中使用DI/Services,因此在某处可能是一个简单的错误.
我需要确保服务在控制器加载之前返回数据.如何实现这一目标
我是棱角分明的新手.我试图从ng-change of select中调用工厂服务方法'getScoreData',但是无法完成它.请帮忙.
Html代码:
<select ng-model="Score" ng-change="getScoreData(Score)" ng-options="c.name for c in Scores"></select>
Run Code Online (Sandbox Code Playgroud)
Angularjs代码:
var app = angular.module('audiapp', []);
app.controller('audiLayoutCtrl', function ($scope, ScoreDataService) {
ScoreDataService.getScoreData($scope.Score, function (data) {
$scope.ScoreData = data;
});
});
app.factory('ScoreDataService', function ($http) {
return {
getScoreData: function (Score, callback) {
var params = {
questionCode: Score.code
}
return $http({
url: 'Home/GetAvgData',
method: 'GET',
params: params
}).success(callback);
}
};
});
Run Code Online (Sandbox Code Playgroud)
上面是服务工厂方法,它从控制器实例化.我尝试从ng-change of select实例化,但它既没有给出错误也没有被调用.
angularjs angularjs-directive angularjs-service angularjs-factory angularjs-ng-change
我正在尝试在我的AngularJS应用程序中包含一个javascript库(实际上是一个handfull).到目前为止,我正在构建这个应用程序的精简版本,没有任何设计.这就是功能和数据处理的全部内容.
这是我试图添加到我的AngularJS应用程序中的第一个javascript库:https://github.com/LarryBattle/Ratio.js
首先,我尝试使用脚本src标记将其简单地包含在我的HTML文件中,但是当我尝试在我的控制器中使用它时,我收到此错误:ReferenceError:require未定义
我已经读过,最好将javascript库转换为服务或指令,甚至在使用AngularJS时将其转换为过滤器.任何人都可以提供有关最佳方法的任何见解吗?或者也许是一些相关的教程?我找不到一个足以满足我需求的简单.任何人都可以帮忙或提供一些指导吗?到目前为止,这是我的代码:
<html ng-app="myApp">
<head>
<title>PercentCalc App</title>
</head>
<body ng-controller="MainCtrl">
Amount: <input type="number" ng-init="amountone=28" ng-model="amountone"> Value: <input type="number" ng-init="valueone=300" ng-model="valueone">
<br />
Amount: <input type="number" ng-init="amounttwo=3.5" ng-model="amounttwo"> Value: <input type="number" ng-init="valuetwo=50" ng-model="valuetwo">
<br /><br />
=========================
<br /><br />
Test ratio: {{ amountone }}/{{ amounttwo}} = {{ ratioone() }} OR {{ ratioonestring }}<br />
Test ratio: {{ amounttwo }}/{{ amountone}} = {{ ratiotwo() }}<br />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.min.js"></script>
<script type="text/javascript" src="js/ratio.js"></script>
<script type="text/javascript" src="js/percentcalc-ng-one.js"></script> …Run Code Online (Sandbox Code Playgroud) 我有以下angularjs服务:
angular.module('app.main').factory('MyService', ["$http", function ($http) {
return new function () {
this.GetName = function () {
return "MyName";
};
};
}]);
Run Code Online (Sandbox Code Playgroud)
如何从遗留的js代码中调用GetName函数MyService?
我在为AngularJS服务正确提供依赖项方面遇到了很多麻烦.
我在StackOverflow上看到了许多其他类似错误的帖子,但它们似乎都没有解决问题.
这是应用代码:
cm.modules.app = angular.module('myApp', ['ngRoute', 'ngAnimate']);
myServiceName = function($http) {
// do stuff
};
myServiceName.prototype.value = 1;
cm.modules.app.service('defaultAlertFactoryA', myServiceName);
Run Code Online (Sandbox Code Playgroud)
这是测试代码:
describe('test alertFactoryA', function() {
var $provide;
var mAlertFactoryA;
beforeEach(module(cm.modules.app));
beforeEach(angular.mock.module(function(_$provide_) {
$provide = _$provide_;
}));
beforeEach(function() {
inject(function($injector) {
mAlertFactoryA = $injector.get('defaultAlertFactoryA');
});
});
it('should work', function() {
expect(true).toBe(true);
});
});
Run Code Online (Sandbox Code Playgroud)
这是错误:
错误:[$ injector:unpr]未知提供者:defaultAlertFactoryAProvider < - defaultAlertFactoryA http://errors.angularjs.org/1.2.0-rc.2/ $ injector/unpr?p0 = defaultAlertFactoryAProvider%20%3C-%20defaultAlertFactoryA
问题:如何解决此问题,以便测试通过?
我正在写一个angularJS应用程序.在这个特定的控制器中,我通过该$window.open服务打开一个新的浏览器窗口.但是在新窗口中,所有$scope变量都会丢失.
我尝试使用,window.parent但这不起作用.事实上,在新的浏览器窗口中,所有应用程序服务,控制器或作用域根本不起作用,这是真的吗?有没有办法打开一个新的浏览器窗口,但仍然使新窗口属于旧窗口中相同的角度应用程序?我需要访问一些angularJS服务和打开该新窗口的控制器的范围.这有可能吗?
javascript angularjs angularjs-service angularjs-scope angularjs-controller
我有这个HTML:
<p>Hello {{name}}</p>
Run Code Online (Sandbox Code Playgroud)
控制器是:
function myCtrl(scope, service) {
scope.name = service.getUsername(); // service.getUsername() return "World!"
}
myCtrl.$inject = ['$scope', 'originalService'];
Run Code Online (Sandbox Code Playgroud)
该服务工作正常,所以我不粘贴代码...在这种情况下,结果是" Hello world! "我以这种方式更改了HTML:
<p>Hello {{service.getUsername()}}</p>
Run Code Online (Sandbox Code Playgroud)
但这不起作用.
我改变了控制器:
function myCtrl(scope, service) {
scope.ser = service;
}
myCtrl.$inject = ['$scope', 'originalService'];
Run Code Online (Sandbox Code Playgroud)
然后是HTML
<p>Hello {{ser.getUsername();}}</p>
Run Code Online (Sandbox Code Playgroud)
这有效!
所以我的问题是:
这是直接在HTML中使用服务功能的唯一方法,还是我遗漏了什么?
我知道如何拦截所有请求,但我只想拦截来自我的资源的请求.
有谁知道如何做到这一点?
services.config(['$httpProvider',function($httpProvider) {
$httpProvider.interceptors.push('myHttpInterceptor');
}]);
services.factory("userPurchased", function ($resource) {
return $resource("/api/user/purchases/:action/:item",
{},
{
'list': {method: 'GET', params: {action: 'list'}, isArray: false},
'save': {method: 'PUT', params: {item: '@item'}},
'remove': {method: 'DELETE', params: {item: '@item'}},
}
);
});
services.factory('myHttpInterceptor', function($q,$rootScope) {
// $rootScope.showSpinner = false;
return {
response: function(response) {
$rootScope.showSpinner = false;
// do something on success
console.log('success');
console.log('status', response.status);
//return response;
return response || $q.when(response);
},
responseError: function(response) {
// do something on error
$rootScope.showSpinner = true;
console.log('failure');
console.log('status', …Run Code Online (Sandbox Code Playgroud)