Angular js $window.open 无法在移动浏览器的 .success 中运行

Angular js $window.open not working in .success for mobile browser

我在使用 Angularjs 时遇到了问题。 $window.open(/somewhere) 函数在 pc 浏览器和移动浏览器上完美运行。但有 1 种情况它不起作用。请帮忙看下面:

 $window.open("https://www.myurl.com");  // OUTSIDE OF REQUEST - no problems 

 $https({
    type: "GET",
    url: "backendURL",
    data: jsonData,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
        $window.open("https://www.myurl.com");  //This doesn't work. 
    },
    error: function(msg) {
        //alert(error);
    }
});

请注意,这只发生在移动浏览器上:chrome 和 safari(我没有为其他浏览器测试)所以我想也许有人对此有经验。请大家帮忙指教。

谢谢...

我在网上找到了这个解决方案,希望对你有所帮助。在回调函数之前执行 var win = window.open();,然后在 .success 中,通过执行 win.location = url; 更改 url。这应该可以解决问题。

我认为首要问题与 "this" scope in JavaScript. If you are able to use arrow functionsES6 版本的 JavaScript 有关,你可以简单地做

success: (msg)=>{
  $window.open("https://www.myurl.com");
}

我想大多数人不会有这个选项。在这种情况下,您可以执行类似于 Yabin 建议的操作:

//somewhere else in code.
var scopedWindow = $window;
//
success: function(msg){
  scopedWindow.open("https://www.myurl.com"); 
}