BackboneJS中的this.currentView未定义
this.currentView in BackboneJS is undefined
我在Backbone.js的主视图中渲染子视图为了杀死zoombie视图,我创建了一个公共函数:
function showView(view) {
if (view){
view.remove();
}
this.currentView = view;
this.currentView.render();
$("#column").html(this.currentView.el);
}
这里我称showView()
:
render : function(){
this.$el.html(mainTemplate);
var _subview= new SubView({el : '#column'});
showView(_subview);
}
子视图:
define(["jquery" ,
"underscore" ,
"backbone",
"text!templates/subviewTemplate.html"
],function($, _, Backbone, Subview){
var SubView= Backbone.View.extend({
initialize : function(){
},
render: function(){
var _subview= _.template(Subview);
this.$el.html(_subview());
return this;
}
});
return SubView;
});
问题:当我在当前视图或showView()
中执行console.log(this.currentView)
时,结果未定义。
知道是什么原因造成的吗?
有两件事:首先,下划线的_.template函数,除非您同时向它传递模板和一些数据,否则它将返回另一个函数。现在看来,您只是在向它传递模板字符串。您要么需要额外传递数据进行插值:
var _subview = _.template(Subview, { key: value });
或者,如果没有要插入的数据,则需要调用该方法来返回标记字符串:
$(this.el).html(_subview());
如果要将视图附加到现有图元,我建议您不要使用此选项$el.当你要求它附加到的元素还不在DOM中时,这个$el将是未定义的。您仍然可以使用$(this.el),而不是使用这种简写,因为在元素存在于DOM中之前,它不会尝试将el选择并缓存为jquery封装的对象。另一种选择是允许div创建元素,并将整个el附加到DOM中,在这种情况下可以使用它$el。
相关文章:
- 为什么“;未定义的“;在JavaScript中结束循环
- 要求未定义JS回调参数
- 如何检查管道中未定义的项目
- TypeError:无法读取属性'推'未定义的JavaScript
- $window.ga在AngularJS事件中未定义
- 未捕获的TypeError无法读取未定义的属性socialsharing
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 无法获取属性'selectedIndex'的未定义引用或null引用
- 如何消除代码中的未定义和其他问题
- 未捕获的ReferenceError:$未定义
- this.router在AngularJS 2中未定义
- 未捕获的类型错误:无法读取属性'删除'的未定义
- 节点fs.stat名称未定义
- 尝试在PHP中回显输入文本时出现未定义的索引错误
- Jquery未定义函数正在停止其他操作
- AngularJS指令出错-无法读取属性'编译'的未定义
- 这.SOMETHING 总是返回未定义的 - extjs
- 无法获取属性'Id'使用Knockout.js的未定义或空引用API
- Wordpress中带有JQuery Accordion的未定义匿名函数
- BackboneJS中的this.currentView未定义