我使用$資源,但只需輕鬆使用$ HTTP(這曾經可以使這項工作對我來說)...如何從角度服務中獲得承諾的價值?
我想服務/工廠稱爲User
,並希望喜歡與它互動所以:
var user = new User()
user.name() // 'Joe User'
但無論我如何努力,我只能從我的服務對象中的承諾,必須使用.then
方法來解決的承諾。
我不能從User
服務中解析它,只是發送來自各種方法調用的值,如.name
,.email
等?
如果是這樣,怎麼樣?
這裏是(使用的CoffeeScript)
'use strict'
class User
constructor: ($resource) ->
@$resource = $resource '/api/v1/users/:id'
current: ->
@$resource.get(id: 'current').$promise
name: ->
# I'd like to call current() here and just get the data.name out of it.
angular.module('myApp').service 'User', ['$resource', User]
這裏,我已經修改,以進一步說明我很困惑的例子我的服務對象有關:
'use strict'
class User
constructor: ($resource) ->
@$resource = $resource '/api/v1/users/:id'
current: ->
@user = @$resource.get(id: 'current')
return @user
angular.module('myApp').service 'User', ['$resource', User]
如果我撥打User.current()
我得到:
Resource {$promise: Promise, $resolved: false, toJSON: function, $get: function, $save: function…}
> $promise: Promise
> $resolved: true
> user: Object
> id: 1
> first_name: "Joe"
> last_name: "User"
> __proto__: Resource
所以在我的腦海裏,我應該能夠調用User.current().user
但是當我做,我得到undefined
請發佈您的服務代碼 – 2015-01-31 21:43:17
您可能可以使用transformResponse選項。 https://docs.angularjs.org/api/ngResource/service/$resource – 2015-01-31 21:44:31
我正在使用咖啡腳本,但會編輯我的帖子以顯示它。 – Nathan 2015-01-31 21:44:55