在AngularJS中,一个控制器如何从另一个控制器获得正在过滤的数据
In AngularJS, how can one controller get data being filtered from another controller
说我们正在编程一个分页:
<div ng-controller="panelCtrl">
<table>
<tr ng-repeat="item in items | filter:query.name">{{item}}</tr>
</table>
<ul ng-controller="paginationCtrl">
<li ng-repeat="n in range()">
</ul>
</div>
在我的range
函数中,我试图获得项目数量,并将其除以itemsPerpage
,以获得页码。我想知道如何在过滤后获得项目数量。
提前感谢
您可以将过滤后的列表保存在变量中。
<div ng-controller="panelCtrl">
<table>
<tr ng-repeat="item in filtered = (items | filter:query.name")>{{item}}</tr>
</table>
<ul ng-controller="paginationCtrl">
<li ng-repeat="n in range()">
</ul>
</div>
现在您可以执行{{filtered.length}}
来获取长度,或者将其用作range(filtered.length)
的输入。
Filtered也可以是可验证的作用域,在这种情况下,它应该在paginationCtrl
中可用。
您可以使用服务在控制器之间进行通信。请参阅下面的解决方案。
var app = angular.module('app', []);
app.factory('dataService', function($filter) {
var data =
{
items: ["Apple", "Banna", "Potato", "Pear"],
itemsFiltered: []
}
return {
data: data
};
});
app.controller('homeCtrl', function($scope, filterFilter, dataService) {
$scope.data = dataService.data;
$scope.$watch('filtered.length', function(value) {
dataService.data.itemsFiltered = $scope.filtered;
})
});
app.controller('paginationCtrl', function($scope, dataService) {
$scope.data = dataService.data;
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app">
<div ng-controller="homeCtrl">
<input type="text" ng-model="query.name" />
<table>
<tr ng-repeat="item in filtered = (data.items | filter:query.name)">
<td>{{item}}</td>
</tr>
</table>
<hr/>
</div>
<div ng-controller="paginationCtrl">
<p>Pagination Controller</p>
<pre> Filtered Array Length: {{data.itemsFiltered.length}}</pre>
</div>
</div>
相关文章:
- 如何在Angular单元测试中从另一个控制器的rootScope将方法添加到rootScope中
- 从AngularJS中的另一个文件中的控制器访问服务
- 如何将一个变量从一个控制器传递到合金中的另一个控制器
- 如何从AngularJs中的另一个控制器访问控制器
- 相对于角度控制器中的另一个阵列过滤阵列项目
- 单击angularjs中的另一个控制器时重新加载控制器
- ASP.NET angularjs重定向到控制器的另一个视图
- 如何在来自另一个文件的控制器中定义变量
- Angularjs - 观察模态窗口从另一个控制器关闭
- 在一个控制器中更新服务变量,并在另一个控制器 - Angular JS中使用更新的值
- AngularJs 从指令中的另一个调用控制器
- 如何使用javascript express node将变量从控制器中的一个方法公开.js到另一个控制器.js
- 将数据从控制器传递到另一个控制器
- 如何从另一个控制器更新控制器的ng重复模型
- 从另一个控制器调用一个控制器
- 无法更改呼叫另一个控制器
- angularjs调用另一个控制器's函数
- 访问一个控制器的ng隐藏值以在全局控制器中操纵另一个控制器中的ng样式
- 无法使用typescript访问angular中另一个控制器中声明的$rootscope属性
- 角度-将数组中的信息从一个控制器传递到另一个控制器