3

在带有 PhoneGap 3.0 和 AngularJS 1.2 的 Windows Phone 7.1 模拟器中,为什么这不起作用:

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 设备模拟器,也不适用于物理设备本身。

4

1 回答 1

3

明白了…… AngularJS/PhoneGap/WindowsPhone 组合存在大量问题。这个问题由https://github.com/angular/angular.js/issues/2303?source=cc#issuecomment-20770025解决。

本质上,因为 windows phone 使用带有单个正斜杠的奇怪协议前缀(x-wmapp0:/),所以 $location 初始化程序会发疯并触发一个错误,该错误会在这个奇怪的错误消息中无缝地暴露自己,与错误完全无关:-(

我即将向 GitHub 上的 AngularJS 存储库提出关于此修复的拉取请求。

于 2013-10-14T21:53:50.737 回答