您好,我有以下问题。 下面是我的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时,我将数据视为未定义,即使我绑定了来自同一控制器的数据。
请帮我解决一下。
答案 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
};
}
});