如何在Backbone fetch成功返回模型?

时间:2012-09-25 20:58:29

标签: javascript asynchronous backbone.js

我想为骨干实现current_user。 我这样做是通过向app.com/current_user.json发送请求

fetch的异步部分似乎不起作用

class App.Models.CurrentUser extends Backbone.Model
  url: '/current'
  defaults: 
    "created_at":"never",
    "email":"new",
    "id": "0",
    "updated_at":"always"

  current_user:() =>
    @fetch(
      succes:(response,status) =>
        console.log(status)
        return status
        )

控制台日志打印出我想要返回的内容,但是函数本身会返回一个对象,其中responseText为json,我想从此函数中获取。

2 个答案:

答案 0 :(得分:1)

它的原因是它只返回模型和服务器响应。这是来自主干源的部分,用于处理fetch

上的响应
  var success = options.success;
  options.success = function(resp, status, xhr) {
    if (!model.set(model.parse(resp, xhr), options)) return false;
    if (success) success(model, resp);
  };

因此,如果您想要返回模型,只需使用传递给成功方法的第一个参数。

current_user:() =>
    @fetch(
      succes:(model,response) =>
        console.log(model)
        return model
        )

答案 1 :(得分:0)

以下是您可以做的事情:

current_user:() =>
  @fetch async: false
  @

请注意,这样做会告诉fetch不是异步的。这意味着只有在提取完成后才会处理提取后的所有其他内容。