Аналог коллекции set позволяет вам предоставить параметр «синтаксический анализ» для запуска функции синтаксического анализатора перед обработкой объекта коллекции. Это удобно, когда у вас есть данные начальной загрузки, из которых вы хотите создать коллекцию, поскольку они не будут проходить через функцию выборки.
Есть ли причина, по которой объект модели не предоставляет такую же возможность для параллельного сбора? Мне кажется непоследовательным, что это опущено.
Изменить: при дальнейшем осмотре сброс по-прежнему учитывает параметр синтаксического анализа.
Я бы посоветовался с
Реализация должна быть довольно простой. Я думаю, главный вопрос в том, есть ли причина не делать этого? Кроме того, что произойдет, если вместо объекта атрибута будет указан ключ val?
Звучит хорошо, но случай, который вызовет загвоздку в моей голове, - это parse
с defaults
( обратите внимание на порядок событий здесь ). Я хотел бы видеть PR с вашими мыслями о реализации.
Отлично, я бы хотел нанести удар.
На самом деле я тоже собирался открыть заявку на это, но потом наткнулся на # 2013 ... хотя я предполагаю, что это было до того, как появилась Collection#set
.
Я согласен с @wookiehangover, что было бы неплохо иметь четность API, и я встречал случаи, когда это имеет смысл при использовании синтаксического анализа для обработки вложенных данных (я только что использовал model.set(model.parse(data))
как упоминалось в другой билет).
@tgriesser Не знаю, как я пропустил эту проблему! Я согласен с этим обсуждением этого варианта использования, но я думаю, что более убедительный вариант использования - это синтаксический анализ данных начальной загрузки (а также вложенный синтаксический анализ, которым я тоже занимаюсь). Я также использовал тот же обходной путь, но, как вы сказали, теперь, когда есть Collection#set
, теперь также есть аргумент четности.
Каков фактический вариант использования для этого?
Если вы хотите вызвать set
в существующей модели, в которой у объекта есть вложенные данные, которые вы будете извлекать из модели в parse
. Я хотел эту функциональность несколько раз.
class Book extends Models.Document
constructor: ->
<strong i="8">@info</strong> = new InfoModel()
<strong i="9">@chapters</strong> = new ChaptersCollection()
super
parse: (attrs, options) ->
@info.set(attrs.info, options)
@chapters.set(attrs.chapters, options)
_.omit(attrs, 'info', 'chapters')
Теперь вы можете это сделать:
book.set({
title: 'title',
info: {
some: data
someNested: {
otherData: ...
}
},
chapters: [{...}, {...}]
}, {parse: true});
и он должен работать ... (да, model.set(model.parse(
работает, но проще иметь тот же api для анализа вложенных данных в коллекциях и моделях) ... хотя с выпуском # 2623 он работает только пока вниз.
Кто-нибудь задумывался, как это изменение будет работать со значениями по умолчанию? А без двойного парсинга?
Чтобы заставить его работать со значениями по умолчанию, я создал options.defaults
, назначенный в функции инициализации для передачи set
, чтобы их можно было применить после этапа синтаксического анализа. Я не знаю, нужно ли нам это дизайнерское решение, но я не мог придумать альтернативного решения.
Переведем этот разговор в открытый пиар ...
Есть какие-нибудь обновления по этому поводу?
На самом деле я использую model.set (model.parse (data)) прямо сейчас, так как опция синтаксического анализа отсутствует. Было бы неплохо иметь это для согласованности с collection.reset и т. Д.
Самый полезный комментарий
На самом деле я использую model.set (model.parse (data)) прямо сейчас, так как опция синтаксического анализа отсутствует. Было бы неплохо иметь это для согласованности с collection.reset и т. Д.