ng-click不会打开新窗口

时间:2015-06-08 13:43:00

标签: javascript html angularjs angularjs-ng-click

我有一张桌子,其中最后一栏包含应该打开一个新窗口的按钮,但他们不会。 这是我的代码:

<table class="table  table-hover" id="angular_table">
  <thead>
    <tr>
      <th class="company">Nome azienda&nbsp;<a ng-click="sort_by('company')"><i class="icon-sort"></i></a></th>
      <th class="code">Codice&nbsp;<a ng-click="sort_by('code')"><i class="icon-sort"></i></a></th>
      <th class="projectName">Nome progetto&nbsp;<a ng-click="sort_by('projectName')"><i class="icon-sort"></i></a></th>
      <th class="recordType">Tipo di record&nbsp;<a ng-click="sort_by('recordType')"><i class="icon-sort"></i></a></th>                            
      <th class="year">Anno&nbsp;<a ng-click="sort_by('year')"><i class="icon-sort"></i></a></th>
      <th class="month">Mese&nbsp;<a ng-click="sort_by('month')"><i class="icon-sort"></i></a></th>
      <th>Crea ricavo&nbsp;</th>
    </tr>
  </thead>                        
  <tbody>
    <tr ng-repeat="item in items | filter:query:checkEqual | orderBy:sortingOrder:reverse " id="lista">
      <td>{{item.company}}</td>
      <td >{{item.code}}</td>
      <td style="text-align: -webkit-left;"> <a href="/{{item.id}}" target="_blank">{{item.projectName}}</a></td>
      <td>{{item.recordType}}</td>                            
      <td>{{item.year}}</td>
      <td>{{item.month}}</td>
      <td class="btnCrea"><button class="btn2 btn-default2" ng-click="window.open('/apex/creaRicavoM?id={{item.id}}','_blank','heigth=600,width=600')">Crea</button></td>
    </tr>
  </tbody>
</table>

有人能帮助我吗?提前谢谢!

5 个答案:

答案 0 :(得分:9)

请将函数定义到$ scope或$ rootScope,并在ng-click上调用该函数。

示例:

<$>在$ scope

$scope.openurl = function(url){
    window.open(url, '_blank','heigth=600,width=600');   // may alse try $window
} 

或者

$ rootScope中的

 $rootScope.openurl = function(url){
        window.open(url, '_blank','heigth=600,width=600');   // may alse try $window
    } 

在html中,试试这个

 <td class="btnCrea"><button class="btn2 btn-default2" ng-click="openurl('/apex/creaRicavoM?id={{item.id}}')">Crea</button></td>

答案 1 :(得分:2)

您应该使用Angular的$window服务从ng-click处理程序中访问窗口对象。

在您的控制器中,向范围添加一个功能,例如

$scope.popupWindow = function(itemId) {
    $window.open('/apex/creaRicavoM?id=' + itemId,'_blank','heigth=600,width=600');
}

然后在您的模板中,您可以使用:

ng-click="popupWindow(item.id)"

另外,不要忘记将$window注入您的控制器。

答案 2 :(得分:0)

这样做

        $scope.viewLink = function (url) {
    var ref = window.open(url, '_system', 'location=yes');
}

在控制器中:

{{1}}

答案 3 :(得分:0)

阅读此回答Open links in new window using AngularJS

您应该将函数绑定到控制器或指令。还可以使用Angular $window服务而不是window对象

答案 4 :(得分:-2)

<a href="http://www.google.com" target="_blank">Visit google!</a> 

试试这个