Внедрить AngularJS 1.2 $ сервис определения местоположения в контроллер, не работающий в PhoneGap 3.0

В эмуляторе Windows Phone 7.1 с PhoneGap 3.0 и AngularJS 1.2 почему это не работает:

angulargap.controller('HomeController', ['$scope', '$routeParams', '$location',
function ($scope, $routeParams, $location) {
    $scope.$routeParams = $routeParams;
    $scope.$location = $location;
    $scope.message = "AngularJS!";
}]);

Сообщение об ошибке:

ERROR:Error: [$injector:cdep] Circular dependency found: 
http://errors.angularjs.org/1.2.0-rc.2/$injector/cdep?p0=

Пока это работает:

angulargap.controller('HomeController', ['$scope', '$routeParams',
function ($scope, $routeParams) {
    $scope.$routeParams = $routeParams;
    $scope.message = "AngularJS!";
}]);

Что не так с внедрением службы $location в этом конкретном сценарии? Все отлично работает в Chrome и Internet Explorer в настольном браузере. Но он не работает ни в эмуляторе устройства Windows Phone 7, ни на самом физическом устройстве.

1 ответ

Решение

Понял, ребята... Существует большое количество проблем для комбинации AngularJS/PhoneGap/WindowsPhone. Эта проблема была решена с помощью https://github.com/angular/angular.js/issues/2303?source=cc.

По сути, потому что Windows Phone использует странный префикс протокола с одной косой чертой (x-wmapp0:/), инициализатор $location сходит с ума, и это вызывает ошибку, которая неожиданно выдает себя в этом странном сообщении об ошибке, совершенно не связанном с ошибкой:-(

Я собираюсь предложить запрос на исправление для этого исправления в репозиторий AngularJS на GitHub.

Другие вопросы по тегам