fe-*_*nja 5 javascript backbone.js
我一直在玩骨干并试图学习它.我暂时停留在这一点上.无法弄清楚以下代码有什么问题?
render: function() {
this.$el.empty();
// render each subview, appending to our root element
_.each(this._views, function(sub_view) {
this.$el.append(sub_view.render().el); // Error on this line
});
Run Code Online (Sandbox Code Playgroud)
Gur*_*ngh 11
你有上下文问题.this
你提到的不包含$el
你正在寻找的东西.您可以通过声明self
指向适当的变量来解决此问题this
.以下代码应该适合您.
render: function() {
var self = this; //Added this line to declare variable (self) that point to 'this'
this.$el.empty();
_.each(this._views, function(sub_view) {
self.$el.append(sub_view.render().el); //Used 'self' here instead 'this'
});
Run Code Online (Sandbox Code Playgroud)
旁注:当您正在使用主干时,您应该了解文档重排的一个非常常见的JavaScript问题.您将为集合中的每个模型渲染视图.它可能导致性能问题,特别是在旧计算机和移动设备上.您可以通过将所有内容呈现container
并附加一次来优化代码,而不是每次都更新DOM.这是一个例子:
render: function() {
this.$el.empty();
var container = document.createDocumentFragment();
_.each(this._views, function(sub_view) {
container.appendChild(sub_view.render().el)
});
this.$el.append(container);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
159 次 |
最近记录: |