在呈现视图时,我似乎正在写这样的东西......
_.each @model.nestedcollection.models, (nestedmodel) ->
我觉得在某些时候我可能需要写一些像......
_.each @model.nestedcollection.models, (nestedmodel) ->
_.each nestedmodel.nestedcollection.models, (nestednestedmodel) ->
#pass into new view
有时候。
这是正常的还是我应该以更好的方式处理这个问题?
答案 0 :(得分:4)
这很正常。骨干文档提供list of underscore methods for iteration。您会在列表顶部看到_.each。您应该了解这些方法(如果您还没有)并使用最合适的方法。您的第二个示例可能是一个很好的用例,可以将_.each用作外部迭代器,使用更具体类型的迭代器(如select,detect,reject或reduce)作为内部迭代器。根据您的意图选择合适的迭代器函数。
答案 1 :(得分:4)
有一点需要注意的是,除了已经说过的内容之外,骨干文档中列出的功能可直接在骨干集上使用。
您无需致电_.each @model.nestedcollection.models, (model) ->
,而是可以致电@model.nestedcollection.each (model) ->
......或者其他正确的coffeescript语法。
功能相同,因为它委托下划线的each
方法,但更容易输入和读取,因为它直接在集合上。
答案 2 :(得分:0)
更新 我更喜欢Derick在处理问题时的具体答案。我的建议太模糊了。
除了审阅文档之外,我对骨干不熟悉。
sorta OOP: 您可以创建一个对象,该对象会自动迭代它的组合内部模型并呈现它们。这样,它们的任何组合都会自动迭代它们的内部模型并渲染它们。
sorta功能: 或者,您可以将渲染函数传递给所有嵌套模型,并让它们各自使用它。