Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从类函数返回新的主干实例_Javascript_Jquery_Backbone.js_Coffeescript - Fatal编程技术网

Javascript 如何从类函数返回新的主干实例

Javascript 如何从类函数返回新的主干实例,javascript,jquery,backbone.js,coffeescript,Javascript,Jquery,Backbone.js,Coffeescript,我希望能够获得一个随机图书模型,如: book = App.Models.Book.random() 我在CoffeeScript中有以下Backbone.js模型 class App.Models.Book extends Backbone.Model @random: -> $.getJSON "/books/random", (data) -> new App.Models.Book author: data['author']

我希望能够获得一个随机图书模型,如:

book = App.Models.Book.random()
我在CoffeeScript中有以下Backbone.js模型

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

但是,我相信您可以看出,@random返回的是jqXHR对象,而不是实例。我已经检查过了,回调中的数据是正确的。

这是Java | CoffeeScript,所有操作都是使用回调完成的。您不会从App.Models.book.random返回random book,而是给它一个回调函数:

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挂钩,那么您的随机类方法仍然会返回jqXHR。

这是Java | CoffeeScript,所有操作都是通过回调完成的。您不会从App.Models.book.random返回random book,而是给它一个回调函数:

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挂钩,则您的随机类方法仍将返回jqXHR。

调用

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}
召唤

课堂上

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}

非常感谢。布莱恩昨晚死了,非常感谢。布莱恩昨晚死了。