AngularJS $ window.confirm在Chrome中不起作用

问题描述:

angular.module('myApp') 
    .controller('pancakeController', ['$scope', '$window', function($scope, $window) { 

    $scope.panCakes = []; 

    $scope.removePancake = function(index) { 

     if($window.confirm('are you sure?')) { 
     $scope.panCakes.splice(index, 1); 
     } else { 
     $scope.panCakes.splice(index, 1); 
     } 
    }; 

}]); 

myApp已在其他文件中定义。我使用angular.module('myApp')来获取对它的引用。

在删除panCake之前尝试使用window.confirm()来确认用户,但在Chrome 37.0.2062.94中未弹出保密框但在Chrome Canary中有效。 我正在使用AngularJS $窗口对象,但使用常规window.confirm也不起作用。在我的代码中是否存在缺少的内容,或者只是该特定版本的Chrome中的错误?

+2

有关忽略$窗口是什么?只要'确认(“你确定?”)' – 2014-09-10 18:39:14

+0

@CollinHenderson整个使用$ window的一点,并且一般来说任何其他的注入依赖,就是你的控制器没有绑定任何函数。在注入$ window的情况下,您可以创建验证您的控制器逻辑的测试,没有它您不能。 – le0diaz 2015-09-28 16:16:17

最可能的原因是您在某些时候检查了小复选框,表示您不想再看到此页面上的任何警报/确认/提示。

(在其他的解决方案,关闭选项卡,并重新打开网页在新标签应恢复警报/确认/提示。)

+0

我会检查一下。它适用于Chrome Canary,因此可能'37.0.2062.9'选中了此选项。 – 2014-09-10 20:03:44

+0

是的,足够有趣这就是它。我在Chrome 37.0.2062.94中开了一个新的会话,它工作。 – 2014-09-10 22:14:57

+0

你节省了我的一天。我正在浏览我的所有JS文件以查找此错误... – 2014-12-11 14:11:26

我在同一个版本的Chrome,你是工作,上面的代码没有在小提琴的工作,你在angular.module的定义有语法错误

应该

angular.module('myApp',[]) 

取而代之的

angular.module('myApp') 

Working Fiddle

+0

我已更新我的anwser,该模块在另一个文件中定义。我正在使用'angular.module('myApp')'来获取对它的引用。 – 2014-09-10 20:02:41