我正在使用SockJS监听websocket事件,并希望将收到的对象插入到我的$scope.mails.items
数组中。我有以下代码片段,我的问题是由于某种原因我无法将message
传递给我的延迟函数。我知道......我试图反复阅读有关这个问题的一些解释,但仍然无法弄清楚为什么它不适用于这种特殊情况。我需要延迟这一点的原因是我希望确保它应用于我的视图,否则它不会。
MyService.receive().then(null, null, function(message) {
$timeout(function(m) {
if($scope.mails.items.indexOf(m) == -1) {
$scope.mails.items.push(m);
}
}, 0, true, message);
});
调试时,我可以看到message
变量具有正确的值,但是当我在延迟函数的中间停止时,m
没有获取数据,但我希望$timeout
将其传递下去。
你能帮忙吗?
答案 0 :(得分:0)
不确定为什么m
没有获得价值(欢迎解释),但这有效:
MyService.receive().then(null, null, function(message) {
$timeout(function() {
if($scope.mails.items.indexOf(message) == -1) {
$scope.mails.items.push(message);
}
}, 0, true, message);
});
答案 1 :(得分:0)
$ timeout的回调函数不带任何参数。该m参数始终为null,只需使用外部函数中的message参数。