Backbone-Forms - лучший способ изменить параметры выбора

Я ищу лучший метод для изменения параметров выбора по требованию. Я знаю, что могу поменять местами параметры, используя метод setOptions в поле формы, но в моем случае это не помогает. Было бы лучше изменить параметры до создания формы.

В моей модели у меня много полей с похожей схемой:

field:{type:"Select",title:"", validators: ['required'], options:new App.Collections.SomeCollection()}

Скажем, мне нужно создать форму, и я не хочу иметь все элементы SomeCollection в качестве параметров выбора. Мне нужно несколько из них, и я могу принести эту коллекцию, это не проблема. Есть ли способ поменять местами параметры перед созданием экземпляра Backbone Forms? Я пробовал, но пока безуспешно. Я уже сталкивался с этой проблемой во второй раз, и я создал выбор вручную (вне механизма Backbone Forms, поэтому без использования свойства полей данных), а затем также вручную вставил параметры, но я считаю, что есть идея получше.

Спасибо за любые идеи!


person Bart Henry    schedule 29.07.2014    source источник


Ответы (1)


Используйте отфильтрованную версию вашей коллекции. Вместо того, чтобы передавать field.options тому, кто отвечает за сопоставление и отображение параметров, передайте отфильтрованную версию коллекции.

var filteredOptions = field.options.filter(function (optionModel) {
    // Some filter boolean check (true adds it to filteredOptions).
    return optionModel.get('key') !== 'UK';
});

Вы делаете это каждый раз, когда вам нужно повторно отобразить выбор с новой отфильтрованной версией коллекции.

P.S. Фильтр происходит от подчеркивания.

person Dominic    schedule 29.07.2014
comment
Спасибо за ответ. Перед этим мне пришлось выполнить выборку, как показано ниже: model.schema.field.options.fetch({async:false}); Теперь я вижу, что это, конечно, возвращает действительные модели, но я столкнулся с другой проблемой. Я передал это так: model.schema.field.options = filteredOptions; Но параметры отображаются как неопределенные без значения. Если я передаю коллекцию (с несколькими элементами) вместо массива, backbone-forms воссоздает всю коллекцию, и я снова получаю все модели ... Это настоящая проблема, а не фильтрация, подчеркивание уже мой друг. - person Bart Henry; 30.07.2014