AngularJS,为什么我的数据服务中没有$ http.get?

时间:2013-08-12 05:08:00

标签: javascript angularjs angularjs-service

代码:

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

1 个答案:

答案 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 
    });
};