Windows phone 7 将AngularJS 1.2$location服务注入不在PhoneGap 3.0中工作的控制器

Windows phone 7 将AngularJS 1.2$location服务注入不在PhoneGap 3.0中工作的控制器,windows-phone-7,angularjs,cordova,windows-phone-7-emulator,Windows Phone 7,Angularjs,Cordova,Windows Phone 7 Emulator,在使用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 =

在使用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设备模拟器中不起作用,在物理设备本身上也不起作用。

明白了,伙计们。。。AngularJS/PhoneGap/WindowsPhone组合存在大量问题。这一个问题已被解决

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


我将向GitHub上的AngularJS回购提出此修复的拉取请求。

我想知道这是否与您将$location注入$scope有关。您能否尝试删除
$scope.$location=$location
,看看您是否仍然存在此问题?这样我们就可以隔离此问题。您好@KayakDave,删除后问题仍然相同行。这段特定的代码来自一个在浏览器中运行良好的示例。有趣的问题。如果您还没有看到,下面是有关错误的详细信息:下一步我会尝试将所有这些都放在一个模块中,以便更严格地控制范围。但这只是我的猜测。我看到您使用的是模块-oops。但我有另一个想法-将函数参数$location重命名为其他名称如何。将第一个“$location”保持在方括号后,但将第二个更改为类似“重命名$location”的名称并在代码中使用重命名的版本。这应该可以保持缩小工作,但可能会解决两次尝试注入$location的注入器问题。但这只是一个理论。