根据ajax响应打开新选项卡 - Angular JS

时间:2016-10-19 17:47:35

标签: javascript angularjs ajax popup window.open

点击超链接

<a href="" ng-click="function(id)">{{id}}</a>

我需要根据我从ajax调用得到的响应(一个标志,比方说 - responseFlag)在新选项卡中打开一些内容。

我试过两种方法。

注意:功能取决于id,因此不能在页面加载时使用它。

1

$http.get(url).success(function(response) {
        if(response.data.responseFlag==true){
             $window.open("http://www.example.com");
        }
        else{
             //perform something else other that window.open
        }
});

这里的问题是&#39; Popup阻截者&#39;在浏览器(Chrome,Mozilla)中 - 阻止它们。

2

var w = $window.open("","_blank");
$http.get(url).success(function(response) {
        if(response.data.responseFlag == true){
              w.location = "http://www.example.com";
        }
        else{
              //perform something else
        }
});

此处,如果&#39; responseFlag = true&#39;,则会在新标签中打开。但正如你可能已经猜到的那样,对于'responseFlag = false&#39;标签打开了。我可以在&#39; else&#39;中使用w.close()也许。但我认为这不是解决方案。

帮帮我朋友!

1 个答案:

答案 0 :(得分:0)

在您的第二个示例中,您在执行请求之前打开了新选项卡,因此执行回调并不重要,您将打开一个新窗口。 我没有看到任何理由为什么$ window.open(...)适用于你的第二个例子而不是第一个例子,也许是因为“_blank”参数......

那么,你能这样试试吗?

$http.get(url).success(function(response) {
        if(response.data.responseFlag == true){
            var w = $window.open("","_blank");
            w.location = "http://www.example.com";
        }
        else{
            //perform something else
        }
});