2014-11-23 4 views
0

я не знаю, как изменить массив в коллекцию. вот что я хочу сделать (CoffeeScript)здание магистральная коллекция для массива

myArray = ['str1', 'str2', 'str3', 'str4', 'str5', 'str6', 'str7'] 
@filters = new Backbone.Collection(myArray) 

что я получаю Backbone.Collection {длина: 9, модели: Array [7] ...}

но каждая модель внутри коллекция выглядит странно:

attributes: 
    Object 0: "s" 
      1: "t" 
      2: "r" 
      3: "1" 

как я могу построить коллекцию так, как я есть атрибут {имя: str1}

ответ

1

Я думаю Магистральные модели ожидать объект не строка. Преобразование массива в набор объектов:

myArray = ['str1', 'str2', 'str3', 'str4', 'str5', 'str6', 'str7'] 
myModels = for name in myArray then {name} 
@filters = new Backbone.Collection(myModels) 
+0

интересный, но ваш код производит коллекцию с одним именем модели: str7 как я могу получить их все? – lipenco

+0

Opps извините, исправлено – Sukima

+0

:) lifesaver. благодаря! – lipenco

1

Позвольте мне дать объяснение относительно того, что происходит здесь,

myArray = ['str1', 'str2', 'str3', 'str4', 'str5', 'str6', 'str7'] 

эта часть занимает в массиве, и сохраняет его в туАггау

myModels = for name in myArray then {name} 

приведенная выше строка кода создает цикл for, проходящий через массив. Он перебирает массив общее число раз, равное myArray.length

@filters = new Backbone.Collection(myModels) 

выше строка кода создает новую коллекцию магистральную, которая основана прочь для цикла, то есть тогда петли через цикл и сохраняет результат в коллекции.

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