Внедрить 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.