1

我希望能够获得一个随机的 Book 模型,例如:

book = App.Models.Book.random()

我有以下 Backbone.js 模型(在 CoffeeScript 中)

class App.Models.Book extends Backbone.Model
  @random: ->
     $.getJSON "/books/random", (data) ->
       new App.Models.Book
         author: data['author']
         title: data['title']

但是,我敢肯定,你可以知道,@random 返回的是 jqXHR 对象,而不是实例。我已经检查并且data在我的回调中是正确的。

4

2 回答 2

4

这是 (Java|Coffee) 脚本,其中一切都使用回调完成。您不会从中返回随机书App.Models.Book.random,而是给它一个回调函数:

class App.Models.Book extends Backbone.Model
  @random: (callback) ->
     $.getJSON "/books/random", (data) ->
       book = new App.Models.Book
         author: data['author']
         title: data['title']
       callback?(book)

然后使用它:

App.Models.Book.random (book) ->
  # Do something useful with book in here

如果调用者想要访问所有常用的花哨的 AJAX 钩子,您的random类方法仍将返回。jqXHR

于 2013-04-02T06:09:31.717 回答
1

称呼

book = App.Models.Book.random()

在班上

class App.Models.Book extends Backbone.Model

  @random: ->
    temp = new App.Models.Book()
    temp.url = "/books/random"
    temp.fetch {wait: true}  # or whatever parameters you want

那应该做你的工作。

但对我来说,我更喜欢非类函数方式。

book = new App.Models.Book()
book.getRandomData()

在班上

class App.Models.Book extends Backbone.Model

  getRandomData: =>
    @url = "book/random"
    @fetch {wait: true}
于 2013-04-02T09:40:05.690 回答