这是backbone.js中的正常现象吗?

时间:2011-10-03 05:17:27

标签: javascript backbone.js coffeescript

在呈现视图时,我似乎正在写这样的东西......

_.each @model.nestedcollection.models, (nestedmodel) ->

我觉得在某些时候我可能需要写一些像......

_.each @model.nestedcollection.models, (nestedmodel) ->
    _.each nestedmodel.nestedcollection.models, (nestednestedmodel) ->
        #pass into new view

有时候。

这是正常的还是我应该以更好的方式处理这个问题?

3 个答案:

答案 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功能: 或者,您可以将渲染函数传递给所有嵌套模型,并让它们各自使用它。