关于主干的困惑.js视图的渲染函数

Confusion about backbone.js view's render function

本文关键字:视图 函数 于主干 js      更新时间:2023-09-26

刚开始使用 backbone.js 和 javascript。在我的集合中,我可以侦听"重置"事件并使其调用我的视图(this)的"渲染"函数。但是我将视图添加到路由器的 DOM 中,如下所示:

$('#container').html(view.render().el)

调用 render().el(我假设它会返回一些 HTML 文本)并将其添加到我的容器div 中。 仅在我的视图上调用渲染是没有用的。那么为什么我的视图在仅调用渲染函数的"重置"事件上完美更新(这是无用的,因为它只返回 self(一个视图对象),实际更新发生在我的路由器中,其中视图的渲染 el 被附加到我的容器div)?

我正在遵循一个教程,为什么我知道答案,只是不知道它背后的原因。

谢谢

$('#container').html(view.render().el) 中,您将view的顶部元素插入到#container -元素中,如下所示:

<div id="container">
  <div class/id="whatever-your-view-has-defined">
    <!-- THIS IS WHERE YOUR VIEW PUTS ANYTHING GOING TO $(this.el) or this.$el -->
  </div>"
</div>

因此,当您在视图的相应集合或模型完成获取之前调用 render 时,您可能只会将视图自己的元素插入到容器中。现在,当您的集合/模型完成提取并触发reset时,视图将再次呈现。我想你的渲染看起来像这样:

render: function() {
  // do something with $(this.el) or this.$el
  // loop through collection and insert something from each model to the view
  // OR
  // take the view's model and insert it to the view
  // I reckon the inserting is done with templates or jQuery manipulation
  //finally 
  return this; // return this to allow chaining render to other things like calling el
}

这基本上意味着您的第一个渲染将视图暂存到 DOM 中,并且在 reset 之后调用的渲染会用内容填充它。你可以放弃

$('#container').html(view.render().el)

部分,例如,如果您将视图的 id -属性设置为 content ,视图将自动查找具有标识符的元素content为它的元素。但是,所有视图的内容都将直接插入到内容元素中。

希望这有帮助,如果仍然不清楚,请发表评论!