2015-09-25 3 views
0

Я хочу создать коллекцию из JSON на основе полученного значения, а where Backbone - отличный инструмент, но похоже, что он не принимает переменные. Возможно ли достичь такого рода функциональности с использованием некоторых методов Backbone, Lodash или Underscore?Передача переменной в Backbone.where

### collection instantiated above 

App.vent.on 'event', (obtained_value) -> 
    desired_models = collection.where(attribute: obtained_value) 
    console.log desired_models 

### outputs empty array 
>[] 

Это делает работу, когда я прохожу key: value непосредственно, но мне нужно, чтобы сформировать коллекцию динамически. Может быть, я изначально сделал ложный маршрут, и решение находится в другом направлении?

+0

Это должно работать нормально. Что конкретно находится в 'received_value' и какое конкретное значение в коллекции вы ожидаете от него? Является ли 'получен_value' строкой, но значением' attribute' является число? –

+0

@muistooshort, идея состоит в том, чтобы отобразить несколько моделей ('B) на основе выбранной опции (' A') в другом представлении. 'A' связан с' B' через 'has_many'. Чтобы достичь этого, мой план состоял в том, чтобы захватить значение выбранного параметра (id) и передать его через Event Aggregator на контроллере, где у меня есть доступ к коллекции 'B'. JSON модели «B» имеет отношение к id модели 'A'' a: id'. Таким образом, с идентификатором 'A' я планировал извлечь все связанные модели B в виде коллекции и передать ее в свое представление. Таким образом, 'полученное значение' - это число, а' атрибут - строка', да. –

+0

@muistooshort Надеюсь, это было не слишком путаное объяснение. Спасибо за Ваше внимание. - curious_gudleif –

ответ

0

, что не будут работать, вам нужно передать объект, так что было бы, как этот

collection.where({attribute: obtained_value}); 

в coffescript вы можете сделать следующее

attribute_var= 
    attribute:obtained_value 

collection.where(attribute_var); 

наилучшими пожеланиями

+0

Вопрос в CoffeeScript, который позволяет обозначить как написанное. –

+0

Ну, обертывание в фигурные скобки сделало это для меня, но, как заметил @PlatinumAzure, я думал, что могу их опустить. –

+0

К сожалению, я слишком сильно поспешил и не сохранил код. Это все еще не работает. –

0

Я предполагая, что ваша цель состоит в изменении attribute, которую вы ищете, поскольку, если значение варьируется, литералы объектов должны работать нормально.

Вы можете сделать это, просто не с литеральным строком объекта. Вот как я это сделаю в JavaScript:

App.vent.on('event', function (obtainedValue) { 
    var finder = {}; 
    finder[attribute] = obtainedValue; 
    desiredModels = collection.where(finder); 
    console.log(desiredModels); 
}); 
+0

, 'finder [attribute]' возвращает 'атрибут undefined'. Это просто атрибут 'wishModel', не должен ли он быть недоступен для меня так? Спасибо за внимание. –

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