2013-02-25 5 views
4

Я разрабатываю одностраничное приложение с requirejs и backbonejs, которое включает в себя выборку записей из таблицы db и их отображение. Я делаю это одним нажатием кнопки. Я думаю, что я ненужно выбираю модели из сервера несколько раз щелкнув по кнопке.Проверка, что коллекция пуста в backbonejs

Что я хочу, так это то, что после того, как я нахожу модель коллекции, она не должна появляться снова при втором нажатии кнопки. Любые изменения/дополнения, которые я делаю на сбор, связаны с проверкой сервера, поэтому я смогу сохранить последний список, не задумываясь о том, чтобы снова взять все модели с сервера на эту кнопку.

Так что мне нужно проверить, нет ли коллекции пустой или нет, прежде чем выбирать модели. что-то вроде этого:

if(window.invoices.isEmpty()) 
      { 
       window.invoices.fetch({success:function(model){ 
       model.each(self.addOne,self); 
       }}); 
      } 
      else 
      { 
       window.invoices.each(self.addOne,self); 
      } 

Прошу пролить некоторый свет, если я здесь принципиально неправильно.

ответ

6

Вы можете использовать метод length.

window.invoices.length == 0


Однако я немного не уверены, что вы пытаетесь сделать с model.each(self.addOne, self). Когда вы выбираете коллекцию, Backbone будет создавать модели из возвращенного JSON и заполнять коллекцию для вас.

+0

Этот код добавляет строки в таблицу. Может использоваться функция isEmpty() для этой цели? – beNerd

+0

isEmpty может использоваться, но это метод подчеркивания, а длина - метод сбора. Это может быть под основой работает isEmpty(), но я думаю, что 'window.invoices.length == 0' намного лучше, чем' _.isEmpty (window.invoice.length) ' – neebz

Смежные вопросы