我正在编写一个使用 Rails 提供 JSON api 的应用程序。我正在使用 AngularngResource
模块来使用这些 json 端点。
虽然我已经ngResource
正确配置(见下文)并且可以将其结果存储到$scope
变量中或将其注销到控制台,但我很难使用服务进行ngResource
调用并将其结果存储到常规旧array
多变的。
在此示例中,我有一个名为 的资源Genre
,它可以访问我的 Rails JSON api。GenreService
注入Genre
并尝试创建一个 'Genre.index() call and store those results into a local
Array` 变量。
以下是文件内容:
流派.js.coffee
'use strict'
app = angular.module("ATWP")
app.factory "Genre", ($resource) ->
$resource "/genres/:slug",
slug: "@slug"
,
create:
method: "POST"
index:
method: "GET"
isArray: true
show:
method: "GET"
update:
method: "PUT"
books:
method: "GET"
GenreService.js.coffee
'use strict'
app = angular.module('ATWP')
genreService = app.factory 'GenreService', (Genre) ->
genreResponse = new Array()
Genre.index((response) ->
genreResponse = response
)
console.log 'Genre Response'
console.log genreResponse
getGenres: ->
genreResponse
此时的日志记录genreResponse
实际上将显示一个数组。但是,如果我注入GenreService
一个控制器,然后将结果存储GenreService.getGenres()
到一个数组中,那么每当我将它记录到控制台时,该数组就会显示为空。
我想知道为什么会这样。我必须使用Promise
API 吗?谁能帮我理解为什么会这样?
多谢你们。