关于主干的困惑.js视图的渲染函数
Confusion about backbone.js view's render function
刚开始使用 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
为它的元素。但是,所有视图的内容都将直接插入到内容元素中。
希望这有帮助,如果仍然不清楚,请发表评论!
相关文章:
- 在不破坏未定义函数的情况下,对多个视图使用单个js文件
- 如何在视图模型contet更新更新上调用Jquery函数
- 仅在响应视图中激发jQuery函数
- setInterval函数不会更改视图中的$scope
- 调用在同一视图中使用javascript在视图中创建的函数
- 从Nodejs中的函数返回数组,并将其发送到ejs视图
- Uncaught ReferenceError:尝试在Android网络视图中访问时未定义函数
- 挖空视图模型函数仅影响最后一个实例
- 未定义的主干视图不是函数冲突
- 对视图上函数的角度绑定导致对数据服务的无限调用
- Angular:将对象存储在服务中以在视图中显示和将crud函数存储到服务器的最佳方式是什么
- 控制器内部的scope函数不根据视图中的ng模型更新值
- 主干.js和 jquery 将单击事件绑定到视图函数
- 无法在单击按钮时调用视图函数主干
- 如何在单独的文件中从另一个视图调用主干视图函数
- 在CouchDB map和reduce视图函数中有哪些JavaScript函数可用
- 用BackboneJS从子视图调用视图函数
- 如何在Django中调用一个带有模板参数的视图函数并返回一个python对象
- 调用木偶.js中的父视图函数
- Backbone.js正在访问另一个视图函数