在我正在开发的Angular JS应用程序中,我正在定期(在$timeout
中)使用服务向我的API中的URL发出GET请求(Angular应用程序和API都在从localhost上的端口5000提供服务。)
出于某种原因,似乎$ http实际上并没有发送GET。对于每个$http.get()
,使用空数据调用.error()
,状态为0.当我签入我的服务器日志时(我正在为我的服务器运行带有Unicorn gem的Ruby on Rails后端) ,似乎服务器从未收到Angular的请求。
这是我服务中的功能:
updateUserStatus = () ->
$http.get('/api/v1/status').success (statusData) ->
# update the variable and notify the observers
this.userStatus = statusData
notifyObservers()
startStatusTimeout()
.error (error, status) ->
# if there's an error, log it
console.log 'error:'
console.log error
console.log status
startStatusTimeout()
奇怪的是它只发生有时。当它停止工作时,我可以将$http.get()
中的网址更改为'/api/v1/status.json'
,然后就可以了。一阵子。然后我将其切换回来并再次运作一段时间......显然在游戏中有一些更大的问题。
我现在已经绞尽脑汁了几天,我在SO上看到了一堆类似的问题,但是它们似乎都是通过在Angular中实现CORS来解决的,我认为这不适用我的情况,因为它全部来自localhost:5000
。我错了吗?发生了什么事?
作为参考,我使用的是Angular版本1.0.7。
答案 0 :(得分:1)
我遇到了同样的问题。
检查您的代码,看看是否在从DOM触发并且Angular不知道的事件之后发生这种情况。
如果是这样,您需要在获取请求之后添加$scope.$apply();
以使其成为现实。
我对Angular很新,所以我不确定这是使用Angular的最佳做法,但它确实适用于我的情况。
请参阅此similar问题以获得更好的解释。