我在获取从骨干路由器传递到视图渲染功能的值时遇到了一些问题。
我的路由器中有一个功能:
routes: {
"content/:contentTypeTitleID/:contentTypeID/:pageLink" : "contentAction",
}
app_router.on('route:contentAction', function(contentTypeTitleID, contentTypeID, pageLink){
if(window.currentSection){
window.currentSection.remove();
}
window.currentSection = new ContainerContent({titleID :contentTypeTitleID, typeID : contentTypeID, pl : pageLink});
$("#webbodycontainer").html(window.currentSection.$el);
window.currentSection.render();
});
观点:
initialize : function(options){
console.log(this.options.typeID);
console.log(this.options.titleID);
console.log(this.options.pl);
},
render : function(){
console.log(this.options.typeID);
console.log(this.options.titleID);
console.log(this.options.pl);
}
网址如下:#content / 7901c296-071d-e411-90ef-0050568726db / ed05829f-071d-e401-93ef-0050568726db / 1
console.log()
方法中的 initialize
没问题,但我在Uncaught TypeError: Cannot read property 'typeID' of undefined
render()
知道可能导致这种情况的原因。感谢。
更新
以下是视图的render
方法中的完整代码:
render : function(){
var _contenttem = _.template(Content);
this.$el.append(_contenttem);
var _content = new Content();
var pageLink = this.options.pl;
if(pageLink != 1){
$("#contentDiv").html("write anything");
}else{
$("#contentDiv").html(_content.getContent(this.options.typeID));
}
$(".navigator").html(_content.writeContentType(this.options.titleID));
$(".contentType").click(function(event){
$('.navigator li').removeClass('active');
$(this).addClass('active');
if(pageLink != 1){
$("#contentDiv").html("write anything");
}else{
console.log(this.options.typeID);
console.log(this.options.titleID);
console.log(this.options.pl);
}
});
}
答案 0 :(得分:0)
看起来你并没有按照预期的方式将它附在dom上。以下是根据您显示的代码在渲染方法中显示this.options
的示例。
小提琴: http://jsfiddle.net/mcfarljw/zwesbhbp/
而不是使用:
$("#webbodycontainer").html(window.currentSection.$el);
您应该使用:
currentSection.setElement("#webbodycontainer").render();