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 に答える