【发布时间】:2015-12-15 09:09:24
【问题描述】:
所以我有一个看起来有点像这样的 JSON 对象:
{
"conversations":[
{
"_id": "55f1595d72b67ea90d008",
"topic_id": 30,
"topic": "First Conversation",
"admin": "admin@gmail.com",
"__v": 0,
"messages": [
{
"body": "Hello?",
"timestamp": "2015-09-10T10:20:40.000Z",
"from": "admin@gmail.com",
"_id": "55f1597a72b67ea90d009"
}
],
"to": [
"me@gmail.com"
]
}
]
}
我正在尝试创建一个自定义过滤器来查找不同对话中的消息。我需要过滤器来返回与过滤器匹配的对话、消息、发件人和消息的时间戳。
我的自定义过滤器如下所示:
.filter('searchForMessage', function() {
return function(arr, searchString) {
if (!searchString) {
return arr;
}
var result = [];
searchString = searchString.toLowerCase();
angular.forEach(arr, function(conversation) {
for (var i = 0; i < conversation.messages.length; i++) {
if (conversation.messages[i].body.toLowerCase().indexOf(searchString) !== -1) {
result.push({
conversation: conversation,
message: conversation.messages[i].body,
from: conversation.messages[i].from,
timestamp: conversation.messages[i].timestamp
});
}
}
});
return result;
}
});
此过滤器有效,因为它返回了所有正确的数据,但我也收到“错误:已达到 10 个 $digest() 迭代。正在中止!”。
有人知道为什么会这样吗?
任何帮助表示赞赏。
【问题讨论】:
标签: javascript angularjs angularjs-filter