我确定它很简单,我在这里失踪但是我无法让它发挥作用.. 我想使用工厂,以便我可以在多个控制器中重复使用数据。
(function() {
'use strict';
angular
.module('www')
.factory('profileFactory', profileFactory);
profileFactory.$inject = ['Restangular'];
/* @ngInject */
function profileFactory(Restangular) {
var service = {
getUserData: Restangular.one('/user/profile/').getList(),
getFriendList: Restangular.all('api/users/getfriendsinvitations/').getList()
};
return service;
}
})();
控制器:
(function() {
'use strict';
angular
.module('www')
.controller('ProfileController', ProfileController);
ProfileController.$inject = ['profileFactory'];
/* @ngInject */
function ProfileController() {
activate();
function activate(profileFactory, $scope) {
profileFactory.getFriendList.then(function (homeFriends) {
$scope.homeFriends = homeFriends;
});
}
}
})();
我一直在" TypeError:无法读取属性' getFriendList'未定义"
编辑:我也试过这个,https://github.com/mgonto/restangular#decoupled-restangular-service,但没有运气!
答案 0 :(得分:1)
您的工厂未正确定义。为了使服务用户可以获得工厂功能,你应该在功能中定义工厂代码,并返回那个应用将帮助你继续承诺链。
<强>代码强>
function profileFactory(Restangular) {
var service = {
getUserData: function(){
return Restangular.one('/user/profile/').getList();
},
getFriendList: function(){
return Restangular.all('api/users/getfriendsinvitations/').getList();
}
};
return service;
}
<强>控制器强>
(function() {
'use strict';
angular
.module('www')
.controller('ProfileController', ProfileController);
ProfileController.$inject = ['profileFactory', '$scope'];
/* @ngInject */
function ProfileController(profileFactory, $scope) { //<==added dependancy here
activate();
function activate() {
profileFactory.getFriendList().then(function (homeFriends) {
$scope.homeFriends = homeFriends;
});
}
}
})();
答案 1 :(得分:0)
您必须在控制器的功能中注入profileFactory服务。