2016-10-12 2 views
0

Я реализовал приложение с несколькими моделями и представлениями, но коллекции немного хлопочут, чтобы их понять. До сих пор я достиг своих целей без использования коллекций, и теперь мне необходимо манипулировать набором моделей на основе атрибутов. И я уверен, что мне нужны коллекции сейчас.Как использовать базовые коллекции для фильтрации моделей

я иметь следующую структуру (которая является способом проще, чем фактическая реализация):

app.Connector=Backbone.Model.extend({ 
    line: //a d3 line object 
    source: //a d3 group 
    target: //a d3 group 
    // and some functions 
}); 

app.Set=Backbone.Collections.extend({ 
    model:app.Connector; 
    url:"/set" //what is the purpose of url? 
}); 

var set=new app.Set(); 
//multiple connectors are initialized 

у меня есть объект d3 obj. Как я могу получить список/массив соединителей, которые имеют obj как target?

ответ

2
var filtered = set.filter(d=>d.get('target') == obj) 

Я считаю системообразующих get функции слишком многословным, поэтому я хотел бы преобразовать коллекцию в JSON до фильтрации.

var filtered = _.filter(set.toJSON(),d=>d.target == obj) 
+0

Я попробовал, но возвращенный массив пуст. Проверьте JSfiddle на https://jsfiddle.net/sachid/qko7vnxv/1/ – SachiDangalla

+1

https://jsfiddle.net/qko7vnxv/2/ Создана модель, после чего вы создали коллекцию. Вы никогда не ставите модель в коллекцию! –

+0

Спасибо. И последний вопрос. Если я хочу добавить все 'Connector' в предварительно инициализированный' Set', есть ли что-то не так, говоря «set.add (this)' в инициативе модели? – SachiDangalla