2014-01-06 2 views
0

В приложении «Магия» у меня есть модель. Есть ли способ получить все экземпляры этой модели в приложении, если не все экземпляры принадлежат к одной коллекции? Некоторые экземпляры могут не принадлежать какой-либо коллекции вообще.Листинг экземпляров модели в базовом приложении

ПОЧЕМУ Мне нужно это сделать?

У меня есть модели с именами (скажем, Order.Models.Entry). Это модель случаев, о которых я говорю. Существуют некоторые коллекции, такие как Order.Models.Entries, которые содержат экземпляры типа Order.Models.Entry. Но экземпляры попадают в эту коллекцию только тогда, когда они выбраны (с определенным атрибутом). Перед тем, как выбрать модели, это просто ... хорошо ... модели.

UPDATE

Очевидно, что я мог бы загрузить каждую модель я создаю какой-то allModels коллекции, как это было предложено в комментариях. Но вопрос не в том, об обходном пути, а о точном поиске. Причина, по которой я хотел бы избежать добавления моделей в коллекцию uber, заключается в том, что большинство моделей будут добавлены в разные коллекции, и я просто хотел избежать создания фиктивной коллекции для просто отслеживания.

+0

Зачем вам это нужно? Какова основная проблема, которую, по вашему мнению, будет отслеживать все модели? –

+0

при добавлении экземпляра модели вы всегда можете добавить его в коллекцию 'allModels'? –

+0

@KyleR Я уточнил вопрос с дополнительной информацией. – spliter

ответ

1

№ Есть пара хороших причин дизайна, почему вы не должны этого делать. (инкапсуляция, не загрязняющая глобальный охват и т. д.)

Если вы все еще хотите иметь это решение, вы можете просто сохранить список Gloabl и добавить свой Backbone.Model в этот список, вот быстрое решение :

var allMyModels = [] ; 

var MyModel = Backbone.Model.extend({ 
    initialize:function(){ 
     allMyModels.push(this); 
     // Some more code here 
    }, 
    // also if you wish you need to remove self on close delete function 
}); 
var x = new MyModel(); 
var y = new MyModel(); 

в конце этого кода, allMyModels будет иметь обе модели

+0

Но теперь они находятся на 'allMyModels' навсегда. –

+0

Опять же, выдержка для обходного пути. Но также принимая ответ «Нет». Спасибо. – spliter

+0

@muistooshort вы не имеете в виду, что это плохо, не так ли? Я имею в виду, что в моем конкретном случае это нормально - эти модели живут в течение определенного периода времени, пока пользователь делает заказ. Как только заказ будет выполнен или отменен, коллекция будет убита и все модели будут уничтожены. – spliter

1

Почему вы не создаёте коллекцию (мы будем называть его allModels), и каждый раз, когда создается модель, сделайте следующее: allModels.add(model). Таким образом, вы можете получить доступ к моделям, и если вы уничтожите один, он удалит себя из коллекции.

+0

Продвижение для обходного пути. – spliter

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