0

代码:

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 没有问题。

4

1 回答 1

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 
    });
};
于 2013-08-12T08:29:05.940 回答