如何从 AngularJS 中的服务调用工厂
How to call a factory from a service in AngularJS
我有一个使用Yeoman设置的AngularJS应用程序。在应用程序中,我需要在HTTP Basic Authentication
后面进行 API 调用。我按照本教程弄清楚如何修改我的 HTTP 标头并对 uername 和密码进行编码。但是,我无法弄清楚如何从我的 API 服务调用Base64.encode
。我尝试过的一切总是给我ReferenceError: Base64 is not defined
错误。
我的 API 服务,Base64.encode()
是引发错误的行:
// app/scripts/api.js
angular.module('api.ClientApp', ['base64']).
service('$api', function($http, $q, $cookieStore, $rootScope, $location, $window, $sniffer) {
var $api = this;
this.set_http_auth = function(obj) {
if(obj){
$http.defaults.headers.common['Authorization'] = 'Basic ' +
Base64.encode(obj.username + ':' + obj.password);
} else {
delete $http.defaults.headers.common['Authorization'];
}
};
});
基地64工厂:
// app/scripts/services/Base64.js
angular.module('base64', [])
.factory('Base64', function () {
return {
encode: function (input) {
var output = "";
// ...
return output;
},
decode: function (input) {
var output = "";
// ...
return output;
}
};
});
索引.html:
<!-- app/index.html -->
<script src="scripts/app.js"></script>
<script src="scripts/services/Base64.js"></script>
<script src="scripts/api.js"></script>
<script src="scripts/controllers/signin.js"></script>
在这一行中
service('$api', function($http, $q, $cookieStore, $rootScope, $location, $window, $sniffer) {
您需要注入 Base64 服务 - 即
service('$api', function($http, $q, $cookieStore, $rootScope, $location, $window, $sniffer, Base64) {
相关文章:
- 如何使应用程序加载独立于web服务调用
- 使用javascript中的相同代码为REST服务调用php函数
- 当视图在AngularJS中返回时,我如何获得异步服务调用来更新视图
- 仅在某些客户端上无效的 Web 服务调用
- 画布在 Angular 服务调用中冻结一秒
- Angular 2:当第一个服务成功时,两个后端服务调用
- jQuery验证,在继续之前等待服务调用响应
- 是否仍然存在获取Rest服务调用以返回纯字符串的方法
- AngularJs 2: 如何调试服务调用?(ES6 语法)
- 多个链式 jQuery AJAX POST Web 服务调用
- 来自 chrome 扩展程序的多个网络服务调用
- 如何从 AngularJS 中的服务调用工厂
- Fluxxor / React.JS中的服务调用
- AngularJS函数在多次异步服务调用后
- AJAX 调用:无效的 Web 服务调用,缺少参数值
- 如何在Orchard CMS中处理来自JS的跨域Web服务调用
- 使用 AngularJS 在服务调用后呈现所有表单值
- 如何使用 ajax 请求在 Javascript 中触发 Web 服务调用
- JavaScript 中的 Web 服务调用和 JSON 数组操作
- Angular$q返回promise两次$http服务调用