angularjs - Angularjs 过滤器使用和返回对象:未捕获错误:[$rootScope:infdig]
问题描述
我想创建一个使用并返回对象的自定义 angularjs过滤器。下面的代码在无限消化循环中失败。是什么导致了问题以及可能的解决方案是什么?
angular.module('app', [])
angular.module('app')
.controller('ctrl', ['$scope', function ($scope) {
$scope.obj = {
word: 'world'
}
}])
angular.module('app')
.component('myComp', {
template: '<em>word: {{$ctrl.param.word}}</em>',
bindings: {
param: '<',
}
})
angular.module('app')
.filter('greet', function () {
return function (object) {
return {
word: 'Hello ' + object.word
}
}
})
angular
.bootstrap(document.querySelector('#app'), ['app']);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.7/angular.min.js"></script>
<div id="app" ng-controller="ctrl">
<my-comp param="obj | greet" ></my-comp>
</div>
我注意到如果过滤器输入是一个对象文字,那么一切正常。因此,每次按照infdig错误文档页面的建议调用过滤器时,它似乎与返回新对象没有直接关系。
angular.module('app', [])
angular.module('app')
.controller('ctrl', ['$scope', function ($scope) {
$scope.obj = {
word: 'world'
}
}])
angular.module('app')
.component('myComp', {
template: '<em>word: {{$ctrl.param.word}}</em>',
bindings: {
param: '<',
}
})
angular.module('app')
.filter('greet', function () {
return function (object) {
return {
word: 'Hello ' + object.word
}
}
})
angular
.bootstrap(document.querySelector('#app'), ['app']);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.7/angular.min.js"></script>
<div id="app" ng-controller="ctrl">
<my-comp param="{ word: 'foo' } | greet" ></my-comp>
</div>
解决方案
推荐阅读
- asp.net-core - 在生产中尝试通过 .net core 3.X 中的相对路径读取文件时出错
- javascript - 如何将已编辑的 .html 页面从 iFrame 保存到 ASP.NET Core 中的服务器?
- csv - 将带有标题的 csv 读入 Octave 中的数据结构
- c++ - 专门研究 std::vector 如何增长
- python - 从字典列表中删除具有特定 ID 的字典
- c++ - 使用二次公式的简单二次方程计算器
- excel - 是否可以使用系统时钟在 Excel VBA 中每 100 毫秒调用一次子程序?
- sympy - 使用 `replace` 将术语置于 sympy 的共同点下
- microsoft-graph-api - 如何使用 Microsoft Graph 统计用户数?
- javascript - 带有分页的可扩展嵌套 Angular 材料数据表未按预期工作?