将筛选后的集合传递给Angular指令会导致异常
Passing a filtered collection to an Angular directive causes an exception
我使用的是Angular,我要做的是将一个过滤后的集合传递给一个指令。
我的观点是这样的:
<h1>Filtered Collection (no directive)</h1>
<ul>
<li ng-repeat="person in filteredPeople = (people | filter: { isChecked: true })">
{{ person.name }}
</li>
</ul>
我传递的数据只是一个简单的对象数组:
$scope.people = [
{
name: "George",
isChecked: false
},
{
name: "Jane",
isChecked: false
},
{
name: "Peter",
isChecked: true
}
];
到目前为止一切都很好。但当我试图将上面的HTML放入指令中时,应用程序会崩溃。
指令:
myApp.directive('filterPeople', function () {
return {
restrict: 'A',
template: '<h1>Filtered Collection (directive)</h1>' +
'<ul>' +
'<li ng-repeat="item in collection">{{ item.name }}</li>' +
'</ul>',
scope: {
collection: '=collection'
}
}
});
视图:
<div filter-people collection="filteredPeople"></div>
我得到的错误:
Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations
p.S。我已经在Plunker上传了我的例子,一切似乎都在那里工作。我已经检查了我的应用程序中的代码是否相同。那么,为什么会发生这种情况呢?我的代码在Plunker上运行,但不在我的真实应用程序中。
您实际上并没有在指令中进行筛选;您正在将filterPeople语句中的筛选数据传递到用于显示的指令中。应用程序崩溃是因为你有一个ng重复影响另一个ng循环的输出,导致无限循环(Angular在10次递归后杀死循环)
Plunkr在这里展示了解决这个问题的正确方法。只需将过滤器插入指令即可。
http://plnkr.co/edit/avjr306MESGE8xE6yN1M?p=preview
myApp.directive('filterPeople', function() {
return {
restrict: 'A',
template: '<h1>Filtered Collection (directive)</h1>' +
'<ul>' +
'<li ng-repeat="item in collection | filter: { isChecked: true }">{{ item.name }}</li>' +
'</ul>',
scope: {
collection: '=collection'
}
}
});
相关文章:
- 将JSON对象传递给angular指令
- Angular指令在alertify setContent内容中不起作用
- 如何在angular js中使用指令.不适用于我的情况,为什么
- 向动态生成的DOM添加Angular自定义指令
- 使用指令的angular js中的Like和different
- angular type=[number]指令来阻止粘贴
- Angular Datetimepicker:指令'的模板;uib时间选择器'必须只有一个根元素
- 由于$compile,Javascript(Angular)嵌套指令加载了两次
- 在其他javascript框架模板中运行angular指令
- 如何在给定的angular应用程序中获取所有指令名称
- Angular,从指令控制器中的控制器触发函数
- AngularJS:带有HTML和angular表达式的指令;编译”;具有外部范围的内容
- 将jquery插件转换为指令angular
- 基于嵌套指令Angular的宽度更改文本
- 如何将函数添加到禁用的指令 - Angular 2
- 我在从我的指令 Angular 访问控制器的范围时遇到问题
- 如何将变量从控制器传递到指令?Angular.JS
- 单指令Angular JS中的可选/多模板URL
- 调用链接函数指令Angular 1 ES6
- 指令angular中的访问范围控制器变量