0

我想获取要在随机数生成器中使用的集合的长度。我想要一个显示随机生成的集合模型的视图。我正在使用咖啡脚本,顺便说一句

到目前为止,我已经尝试过类似的东西

@collection.fetch
  data:
    id: Math.floor((Math.random()*@length)+1)

这不起作用,因为长度直到它被提取之后才存在......我尝试了其他几种方法,例如在提取后抓取,但长度始终为零。

任何人都给我一个想法如何做到这一点?

编辑:为那些看不懂咖啡的人准备的 JavaScript

  this.collection.fetch({
    data: {
      'id': Math.floor((Math.random() * length) + 1)
    }
  });
4

2 回答 2

1

根据骨干手册:

Backbone.Collection

集合是有序的模型集

因此,您在应用程序中需要的实际上是来自服务器数据库的随机模型。根据您的 API,您需要获取服务器中记录的计数,然后获取其中一条记录的随机模型。如果您是服务器端 API 的开发人员,有一种方法可以通过一个连接来实现,否则您可以执行以下操作:

class randomModel extends Backbone.Model

    // Assuming 'GET' /api/model/100 will get record No. 100
    urlRoot: '/api/model'

// ... in your document ready

$ () ->
    model = null
    // Assuming 'GET' /api/count, will return JSON string with your records count
    $.getJSON '/api/count', (response) => 
        model = new randomModel id: (Math.random()*response.count)+1
        model.fetch()
        console.log model

几乎这就是我在你的情况下使用的。另一种方法是填充整个集合并在填充后获取随机模型(保存一个请求),方法是:

collection.fetch() // get's all models
collection.get (Math.random()*collection.length)+1
于 2013-05-04T09:33:29.943 回答
1

我过去有同样的任务。我使用了下划线 _.sample 方法。请尝试 _.sample(collection) 它将从集合中返回随机模型,或者更好地返回 _.sample(collection, 4) 用于 4 个随机模型。

于 2015-05-07T02:26:42.720 回答