我有一个我称之为http的服务,问题是我不明白如何在控制器中使用$ scope.photos。如何配置控制器和服务来执行此操作?
app.service('http',function($scope,$http){
function getAll() {
$http.get('/allphotos').then(function success(response) {
$scope.photos = response.data;
}, function error(err) {
console.log('error is:' + err.err)
});
}
});
app.controller('ctrl',function ($scope, http) {
}
答案 0 :(得分:2)
首先,永远不要在Service / Factory / Provider中使用$scope
。范围仅与控制器有关,a.e。处理绑定视图与控制器。
你有一个方法getAll()
应该返回Promise,你将能够在你的控制器内解决它。
类似的东西:
app.service('httpService',function(,$http){
this.getAll = function() {
return $http.get('/allphotos').then(function(response) {
// ^ 'getAll' returns Original Promis comes from '$http'
return response.data;
// ^ here we resolve 'response.data'
}, function(err) {
console.log('error is:' + err.err)
});
}
});
现在在控制器中执行:
app.controller('ctrl',function ($scope, httpService) {
httpService.getAll().then(function(data) {
$scope.data = data;
}, function error(err) {
console.log('error is:' + err.err)
});
}