我有一个基本上由
组成的功能var onclick = function() {
$window.open(url, "_blank", 'location=yes');
}
在Firefox上,当我点击时,我得到:
Error: [$rootScope:inprog] $apply already in progress
这是一个非常常见的问题,通常通过将整个事件放在$timeout()
块中来解决。
除了从超时调用$window.open()
激活弹出窗口阻止程序!我需要一些方法来完成同样的事情,而不退出线程。
答案 0 :(得分:0)
尝试:
var onclick = function() {
if($scope.$root.$$phase) {
$timeout(function() {
$window.open(url, "_blank", 'location=yes');
},0,false);
} else {
$window.open(url, "_blank", 'location=yes');
}
}
但是,你有$ window.open args的双重性。您可以更好地完成代码:
var onclick = function() {
var windowArgs = [url, "_blank", 'location=yes'];
if($scope.$root.$$phase) {
$timeout(function() {
$window.open.apply($window,windowArgs);
},0,false);
} else {
$window.open.apply($window,windowArgs);
}
}
答案 1 :(得分:-1)
使用
window.open()
删除$ window
使用类似:
window.open(url,target,"status=no,height="100px",width="100px",resizable=yes,toolbar=yes,menubar=no,scrollbars=no);
Javascript窗口