使用target' _blank'时未定义用ui-router

时间:2017-09-05 12:09:36

标签: angularjs

您好,我有以下问题。 下面是我的html页面

<div class="content" ng-controller="DataController">
    <table class="table table-striped" id="show" ng-if="datalist.length>0">
        <thead>
          <th>State</th>
          <th>District</th>
          <th>Non-DND's</th>
        </thead>
        <tbody>
          <tr dir-paginate="data in datalist| filter:search|orderBy:sortKey:reverse|itemsPerPage:10" style="cursor:pointer;">
             <td>{{data.state}}</td>
             <td>{{data.district}}</td>
             <td><a ng-click="getnre(data.nondnd,data.dnd,data.land,data.email)" ui-sref="numsemailsdata" target="_blank">{{data.nondnd.length}}</a></td>
          </tr>
        </tbody>
    </table>
    <dir-pagination-controls max-size="10" direction-links="true" boundary-links="true" style="float:right" ng-if="datalist.length>0">
    </dir-pagination-controls>
 </div>

以下是我的controller.js中的代码

app.controller("DataController", function($scope, DataService) {
  $scope.datalist=DataService.getData();
  $scope.getnre=function(ndnd,dnd,land,email) {
    $scope.numsem = {
        ndnds : ndnd,
        dnds : dnd,
        lands : land,
        emails : email
    }
  }
});

以下是numsdetails.html

<div class="content" ng-controller="DataController">
    <table class="table table-striped">
        <thead>
          <th>Non-DND's</th>
        </thead>
        <tbody>
           <tr ng-repeat="ndnd in numsems.ndnds">
              <td>{{ndnd}}</td>
           </tr>
        </tbody>
      </table>
 </div>

我在第一个html页面中显示了非dnd的计数,我需要在新标签中显示非dnd&#39;这是numsemails.html 当我尝试将数据绑定到numsemails.html时,我将数据视为未定义,即使我绑定了来自同一控制器的数据。

请帮我解决一下。

2 个答案:

答案 0 :(得分:2)

numsems未定义的原因是,当您打开新页面(空白)时,您将创建应用的全新实例。这就像是第一次加载页面。可以把它想象成一个完全不同的浏览器实例,因为它就是这样。您可以使用stateparams传递参数,这会在url中传递,但是您尝试传递整个对象,因此变得有点困难。

您的问题有多种解决方案。您可以在URL中传递一些数据,也可以使用localstorage,$ window或cookie来存储数据。我确定还有其他解决方案。选择其中一种方法来正确处理您的数据,我们可以帮助您。

此问题已在其他主题中讨论过。

ui-router: open state in new tab with target=“_blank” with object params

答案 1 :(得分:0)

您的控制器代码错误,您缺少括号和大括号:

app.controller("DataController", function($scope) {
  $scope.datalist = DataService.getData();
  $scope.getnre = function(ndnd,dnd,land,email) {
    $scope.numsem = {
      ndnds : ndnd,
      dnds : dnd,
      lands : land,
      emails : email
    };
  }
});