我在Backbone js中练习使用外部模板,我得到了这个TypeError,它说对象没有template
。
如果路由器在另一条路径中,如何识别/调用视图,反之亦然?
我已经包含了我正在处理的代码:
profile.js
window.ProfileView = Backbone.View.extend({
initialize: function() {
this.render();
},
render: function() {
$(this.el).html(this.template());
return this;
}
});
main.js
var AppRouter = Backbone.Router.extend({
routes: {
'profile' : 'profile'
},
profile: function() {
this.profileView = new ProfileView();
$('#global-content').html(this.profileView.el);
}
});
utils.loadTpl (['profile'], function() {
appRouter = new AppRouter();
Backbone.history.start();
});
utils.js
window.utils = {
loadTpl: function(views, callback) {
var deferreds = [];
$.each(views, function(index, view) {
if (window[view]) {
deferreds.push($.get('templates/' + view + '.html', function(data) {
window[view].prototype.template = _.template(data);
}));
} else {
// alert(view + " not found");
}
});
$.when.apply(null, deferreds).done(callback);
}
};
答案 0 :(得分:1)
模板不是函数,您需要将其称为视图的属性,因此您应该删除()
e.g。
$(this.el).html(this.template);