set 的集合对应物允许您提供“解析”选项以在处理集合对象之前运行解析器函数。 当您有要从中构建集合的引导数据时,这很方便,因为它不会通过 fetch 函数。
模型对象没有为并行收集提供相同的选项是否有原因? 它被省略对我来说似乎不一致。
编辑:经过进一步检查,重置仍然尊重解析选项。
我会推迟@caseywebdev关于此操作的能力,但我认为在模型和集合解析之间进行 API 奇偶校验当然是合理的。 感谢您打开问题@etler!
实施应该非常简单。 我认为主要的问题是是否有任何理由不这样做? 另外,当提供键 val 而不是属性对象时会发生什么?
这听起来不错,但会导致我头顶障碍的情况是parse
和defaults
(注意这里的事件顺序)。 我很想看到一个包含你的实现想法的 PR。
太好了,我很想试一试。
我实际上也打算为此开一张票 - 但后来遇到了 #2013 ......尽管我认为那是在有Collection#set
。
我同意@wookiehangover 的观点,即 API 奇偶校验会很好,而且我遇到过使用 parse 处理嵌套数据时有意义的情况(我刚刚使用了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 等保持一致,这将非常好。