【问题标题】:Rendering collection view in CompositeView triggered constructor?在 CompositeView 触发的构造函数中渲染集合视图?
【发布时间】:2013-01-04 12:07:28
【问题描述】:

我有一个复合视图,它有一个任务,它是 cmets。我把它放到一个 contentRegion 上来显示。单独渲染模型时,它工作正常。然而,在收集时,它的行为真的很奇怪。 console.log 显示初始化函数已被触发两次。第一次是定义视图的时候

taskView = new MyProject.Views.Task
  model : task
  collection : comments

然后我执行MyProject.contentRegion.show(taskView) 以渲染模型视图。之后,我只需拨打comments.fetch() 即可获取所有cmets。然后问题来了,它重新初始化了我的taskView,并且模板一直抱怨xxx未定义。

有什么想法吗?我知道这很奇怪,因为我项目中的另一个 CompositeView 效果很好。

【问题讨论】:

  • 请发布更多代码。这里还不足以知道发生了什么。例如“MyProject.Views.Task”是什么?
  • 我遇到了几乎完全相同的问题。我将开始一个新问题
  • @ThomasHudspith-Tatham 我最终使用了 itemview 并手动循环添加集合。

标签: marionette


【解决方案1】:

NathanInMac,我根据你使用 itemView 的建议做了一些测试,发现了一些有趣的东西。

您的问题是否涉及嵌套复合视图?和我的一样,但我不确定这是否会影响任何事情。

解决问题的方法是最初尝试使用无法找到 itemView 的 collectionView,因此我将 collectionView/compositeView 的 itemView 定义移至 collectionView(或扩展)的定义之前。

这似乎是一个有效的修复,只是复合视图的双重初始化而不是显示一些异常或错误的误导性错误。

【讨论】:

  • 谢谢托马斯。我的解决方案是在新项目视图中,为我的模型添加一个“更改”事件,并在回调中重置集合模型。然后将触发集合的重置事件。之后在这个回调中对集合做任何你想做的事情。
猜你喜欢
  • 1970-01-01
  • 2016-12-08
  • 1970-01-01
  • 1970-01-01
  • 2014-04-17
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
相关资源
最近更新 更多