1

在我正在开发的 Angular JS 应用程序中,我正在使用一项服务定期(在 a 中$timeout)向我的 API 中的 URL 发出 GET 请求(Angular 应用程序和 API 都从本地主机上的端口 5000 提供服务)。

出于某种原因,似乎 $http 实际上并未发送 GET。对于 each $http.get().error()使用空数据和状态 0 调用。当我检查服务器日志时(我正在为我的服务器运行带有 Unicorn gem 的 Ruby on Rails 后端),服务器似乎从未收到请求来自角。

这是我的服务中的功能:

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()

真正奇怪的是它只偶尔发生。当它停止工作时,我可以将 中的 URL 更改$http.get()'/api/v1/status.json',并且它可以工作。一阵子。然后我把它切换回来,它又可以工作了一段时间……显然有一些更大的问题在起作用。

我已经绞尽脑汁好几天了,我在 SO 上看到了很多类似的问题,但它们似乎都可以通过在 Angular 中实现 CORS 来解决,我认为这不适用于我的情况因为这一切都来自localhost:5000. 我错了吗?这是怎么回事?

作为参考,我使用的是 Angular 1.0.7 版。

4

1 回答 1

1

我有同样的问题。检查您的代码,看看这是否发生在从 DOM 触发且 Angular 未知的事件之后。如果是这样,您需要$scope.$apply();在获取请求之后添加以使其发生。

我对 Angular 还很陌生,所以我不确定这是使用 Angular 的最佳实践,但它在我的情况下确实有效。

请参阅这个类似的问题以获得更好的解释。

于 2013-10-31T12:38:30.860 回答