我创建了以下代码:
topicService.topics.forEach(function (row: ITopicRow) {
if (row.topicId == $stateParams.topicId) {
row.current = true;
topicService.topic = angular.copy(row);
topicService.topicBase = angular.copy(row);
} else {
row.current = false;
}
})
当调用函数代码并将$ stateParams.topicId设置为数字时,它会搜索行并在该特定行上将current设置为true。
但是我遇到的问题是,如果只有一个主题,它就不起作用。在这种情况下,forEach甚至不运行。下面是显示长度为1的行。我还可以看到当我将鼠标悬停在主题上时,表示它是一个数组[]。
var x = topicService.topics.length; x = 1<<<<<<<<
请注意,当我把它放在forEach之前,并且当我在forEach的第一行放置一个调试点时,它就不会去那里。
我是否有某种方法可以使用forEach解决这个问题,或者我是否需要只针对只有一个主题的情况编写代码?
答案 0 :(得分:2)
如果存在多个项目,则某些API函数返回数组并且如果仅存在一个项目则返回项目而不是"array with one item"
。因此,topicService.topics
甚至可能不包含数组。
最有可能的是,为什么forEach
在你的情况下失败了。所以添加一张支票:
if( topicService.topics.constructor === Array) {
// do foreach
}
答案 1 :(得分:0)
如果只有一个,那么每个都可以工作,你必须在代码中的其他地方出错,尝试在运行forEach之前打印出topicService.topics中的元素数量我猜想有什么东西将它改为0 < / p>