我希望能够获得一个随机的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
在我的回调中是正确的。
答案 0 :(得分: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
。
答案 1 :(得分: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}