我在现有的Backbone项目中工作。我正在使用Dashboard页面。在此页面中,我们为每个部分提供了单独的视图,我正在处理mypage
部分
仪表板js具有以下代码
require(['project/home/mypage'], function(MyPage) {
myPage = new MyPage();
$(self.el).find("#my-page").html(mypage.render(self));
});
require([ 'project/home/differentpage' ], function(DifferentPage) {
differentPage = new DifferentPage();
$(self.el).find("#different-page").html(differentPage.render());
});
mypage.js文件看起来像这样。它正在从另一个javascript文件扩展视图,并在呈现后调用重写的renderComments
方法来更新视图。
render : function(parent) {
require(['project/homepage'], function(HomePage){
var mypage = HomePage.extend({
render:function() {
$(this.el).html('<div id='+this.rowContainer()+'> </div>');
return this;
},
rowContainer: function(){
return 'rowList';
},
renderComments: function(responseJson, loadMoreRows){
// My Logic for this page goes here. I am adding few rows to the view
}
});
var mytempPage =new HomePage();
var trayEl = mytemppage.render().el;
trayEl.renderComments();
$(this.el).html(trayEl);
return this;
}
该视图正在获取标识为div
的{{1}}标记,但未添加该行。当我使用inspect元素调试时,将调用renderComments方法。
我在这里遗漏了什么。感谢您的帮助
答案 0 :(得分:0)
var mytempPage =new HomePage();
创建一个新元素
var trayEl = mytempPage.render().el;
trayEl被分配给渲染结果的.el属性.... 功能(它返回&#39;这&#39; ...所以它只是.el本身)
trayEl.renderComments();
renderComments当前返回undefined /什么都没做...所以看起来你只是将.el本身传递给html,而html不应该渲染任何其他东西。
$(this.el).html(trayEl);
请记住,要在此处更改html,trayEl需要是一个html字符串。 尝试在一些原始html中传递想要添加的注释,并查看是否有效。