Angular $ http - 在一个函数调用中发出请求和返回响应

时间:2014-10-19 04:57:18

标签: javascript ruby-on-rails angularjs coffeescript angular-promise

我正在尝试在Angular中创建一个模型类,它近似于Rails模型约定,并且在它上面有基本的数据库交互方法。我们的想法是创建一个基本上是通过可预测的内部API通过Rails后端工作的JavaScript ORM。像这样:

mod = angular.module('Models')
mod.factory 'User', ($http) ->
  class User

    constructor: (properties) ->
      _.extend(this, properties)

    @find: (id) ->
      $http.get("/api/v1/users/#{id}")
        .success (response) ->
          return User.new(response)

请求命中的API动作然后将返回该ID的序列化用户,success函数随后将其换行为该类的对象(User.new(response))。这样,我可以这样做:

user = User.find(5)

在我的CoffeeScript中,user对象将是ID为5的数据库中的用户,包装为我的CoffeeScript类的成员。

问题在于上面编码的方式,当我调用User.find(5)时,它会返回$ http promise对象,可以在其上调用.success等,调用$http.get(...)展开success案例并从中初始化User对象的结果。因此,如果我在上面之后控制日志user,我会看到类似这样的内容:

Object {then: function, catch: function, finally: function, success: function, error: function}

我怎么能这样做?我试图避免做这样的事情:

User.find(5).success (response) ->
  user = User.new(response)

因为上述类型会破坏我想要制作的ORM的易用性/目的。 (我从一个模型开始,但最终想将其提取到BaseModel)。有任何想法吗?我对Angular Promises不熟悉(并且在JavaScript方面并不是很多专业人士)并且一直在反对这一点。

谢谢,

萨莎

0 个答案:

没有答案