【问题标题】:ngResource: Promise not ResolvedngResource:承诺未解决
【发布时间】:2014-12-15 23:59:54
【问题描述】:

假设这样的服务:

.factory('GetPaths', function($resource) {
  return $resource('/paths/coord/:lat/:long', 
       {lat: "@lat" }, {long: "@long" } , 
       {
         get:    {method: 'GET' , isArray: true },  
      }

   );
})

它是这样调用的:

scope.paths = GetPaths.get({'lat':1},{'long':1}); 

我收到以下回复:

{"long":1,"$promise":{},"$resolved":false}

当我在后端使用 cURL 时,我得到了这个 JSON 数组:

[
  {
    "pathid":"1",
    "title":"Pathest",
    "eta":"3:00",
    "TYPE":"Hike",
    "difficulty":"Hard",
    "distance_in_km":"0"
 }
]

我的问题是:如何检索与数据相同的 JSON 数组来填充我的列表?

【问题讨论】:

    标签: json angularjs ionic-framework ngresource


    【解决方案1】:

    $resource 配置存在问题。应该是:

    return $resource('/paths/coord/:lat/:long', 
       {lat: '@lat', long: '@long' } , 
       { get: { method: 'GET', isArray: true } }
    );
    

    在您的情况下,您可以只使用 query 而不是 get 并完全省略第三个参数。查看$resource docs

    【讨论】:

    • 我的日志现在返回空响应是否正常?
    • 可以肯定的是,在将修复应用到配置后,您正在调用 api,例如 GetPaths.query({ lat: 1, long: 1 })?
    • 是的。我的新代码可以在这里找到JS Pastebin你可以在API Sample Call上调用API
    • 是的,这可能没问题,因为$resource 是异步的。您可以检查数据是否可供控制器使用,例如通过在模板中输出<pre>{{ paths | json }}</pre>
    • 或者使用 $resource 的替代回调语法:GetPaths.query({'lat':1,'long':1}, function (data) { $scope.paths = data; console.log('pats', data); });
    【解决方案2】:

    问题实际上来自我的浏览器的 CORS 安全性。 它可以通过打开 chrome 来禁用:

    --args --disable-web-security
    

    【讨论】:

      猜你喜欢
      • 2016-05-30
      • 2020-03-16
      • 2020-10-22
      • 2016-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-24
      • 2019-09-29
      相关资源
      最近更新 更多