AngularJS注入服务失败
AngularJS fail to inject a service
我有一个简单的服务,它从HTTP端点获取数据并将其发送回控制器。
我也在服务中实现了缓存,但是,在我的控制器中的这行代码中,我得到了这个错误TypeError: undefined is not a function
myappApi.getItems().then(function(data)
我试图弄清楚为什么我做不到。这是控制器代码:
.controller('ItemsCtrl',['$scope','myappApi',function($scope, myappApi){
myappApi.getItems().then(function(data){
$scope.items = data;
});
}])
正如我在这里使用Ioniframework一样,我是如何在app.js
:中注入我的服务的
angular.module('myApp', ['ionic', 'myApp.controllers', 'myApp.services', 'angular-data.DSCacheFactory'])
这是我的服务代码:
(function() {
'use strict';
angular.module('myApp.services',[]).factory('myappApi', ['$http', '$q', '$ionicLoading', 'DSCacheFactory', myappApi]);
function myappApi($http, $q, $ionicLoading, DSCacheFactory) {
self.itemsCache = DSCacheFactory.get("itemsCache");
//to re-use expired cached data if no internet connection
self.itemsCache.setOptions({
onExpire: function (key, value) {
getItems()
.then(function () {
console.log("items items Cache was automatically refreshed.", new Date());
}, function () {
console.log("Error getting data. Putting expired item back in the cache.", new Date());
self.itemsCache.put(key, value);
});
}
});
function getItems() {
var deferred = $q.defer(),
cacheKey = "items",
itemsData = self.itemsCache.get(cacheKey);
if (itemsData) {
console.log("Found data inside cache", itemsData);
deferred.resolve(itemsData);
} else {
$http.get("services/data.json")
.success(function(data) {
console.log("Received data via HTTP");
self.itemsCache.put(cacheKey, data);
deferred.resolve(data);
})
.error(function() {
console.log("Error while making HTTP call.");
deferred.reject();
});
}
return deferred.promise;
}
return {
getItems: getItems
};
};
})();
谢谢你抽出时间。
查看角度缓存文件CHANGELOG.md:"-Angular模块重命名为Angular缓存-DSCacheFactory重命名为CacheFactory
您必须更改:
- app.js:使用"angular cache"而不是"angular data.DSCacheFactory"
- service.js使用"CacheFactory"而不是"DSCacheFactory"
在实际定义myappApi函数之前,您似乎已经声明了myappApi工厂。试试类似的东西:
angular.module('myApp.services',[]).factory('myappApi', ['$http', '$q', '$ionicLoading', 'DSCacheFactory',
function($http, $q, $ionicLoading, DSCacheFactory) {
// myappApi code
}]);
相关文章:
- Jasmine单元测试在监视服务方法时失败
- 当服务失败时,如何解析状态
- AngularJS中共享数据服务初始化失败
- AngularJS注入服务失败
- 从jQuery调用Web服务失败适用于python
- $cacheFactory removeAll() 在服务中的单元测试在 Angular 1.2.0 中失败,但在 1.
- 在 angularJS 中向控制器注入服务失败
- Ajax 对 Web 服务 Aways 的调用失败
- Jquery ajax 在调用 rest Web 服务时失败
- 节点脚本需要向调用它的 Angular 服务返回成功/失败
- 谷歌地图方向服务有时会失败
- 使用谷歌地图api在移动设备上的地理定位服务失败
- 当服务抛出错误时,$httpBackend.flush失败
- $.ajax函数在向web服务发送JSON对象时失败
- 在谷歌地图API 3中清除方向服务的路由失败
- 将工厂注入服务失败
- AngularJS, Jasmine服务测试注入失败
- Angular自定义服务调用失败
- Dynamic Directive元素在来自服务的预填充数据中失败
- 将数据发送到本地服务 jQuery 在 IE 中失败