代码:
app.service('dataServices', function ($http) {
...
this.getBases = function (lat, lng) {
var promise = $http.get('/app/nearestbase/?lat=' + lat + '&lng=' + lng);
promise.error(function (msg) { console.log(msg); });
return promise;
};
});
// root controller
function RootCtrl($scope, $location, dataServices) {
navigator.geolocation.getCurrentPosition(function (p) {
dataServices.getBases(p.coords.latitude, p.coords.longitude).success(function (data) {
$scope.model.baseList = data;
});
});
};
正如您在根控制器中看到的,我得到了位置,然后在我写的dataServices.getBases
服务中使用位置变量。我已经能够测试成功找到坐标,并且调用了dataServices.getBases,但$http.get
函数没有触发。永远不会遇到处理呼叫的服务器端方法。没有错误,警告......什么也没有。
我在该服务中有其他功能,使用$ http.get没有问题。
答案 0 :(得分:1)
从angular 1.1.4开始,你需要从angular的上下文中调用$ http。 解决方案请致电$ apply:
// root controller
function RootCtrl($scope, $location, dataServices) {
navigator.geolocation.getCurrentPosition(function (p) {
dataServices.getBases(p.coords.latitude, p.coords.longitude).success(function (data) {
$scope.model.baseList = data;
});
$scope.$apply(); // ADD this line
});
};