查看与.fetch()不渲染
问题描述:
当我使这个观点查看与.fetch()不渲染
var MyView = Backbone.View.extend({
/* el : '.myview', used when rendered on router request */
render : function() {
var data = new Data(); /* a collection from ajax request */
var that = this;
data.fetch({
success : function (bla, data) {
var template = _.template($('#temp').html(), {data: data.players});
that.$el.html(template);
}
});
}
});
对路由器的要求,它的工作原理:
var Router = Backbone.Router.extend({
routes : {
'bla' : 'bla'
}
});
var myView = new MyView();
var router = new Router();
router.on('route:bla', function() {
myView.render();
});
但是,当我想它只是与页面加载,它没有:
var myView = new MyView({ el: $(".myview") });
答
因为在发布的最后一行中,您缺少调用渲染函数。
var myView = new MyView({ el: $(".myview") });
myView.render();
除此之外,我看到初始化工作流有点wiered。即请求.render()
中的数据功能,即违反查看单一责任。一些东西,我在我的应用程序中做的。
var Router = Backbone.Router.extend({
routes : {
'bla' : 'bla'
},
bla: function() {
app.BlaApp();
}
});
app.BlaApp = function() {
var collection = new Collection();
collection.fetch({
success: function (collection) {
var view = new app.BlaView({model: collection});
view.render();
}
})
}
app.BlaView = Backbone.View.extend({
render: function() {
var template = // render template based on this.model;
this.$el.html(template);
return this;
}
});
它会给你什么错误吗?你可以尝试在'var myView = new MyView({el:$(“。myview”)})中将'el'指定为'“.myview”'而不是'$(“。myview”)''。 '? – Cyclone 2013-03-16 15:57:19
@Cyclone没有错误,并删除$()没有区别 – ilyo 2013-03-16 16:01:22
视图初始化是在DOM准备好之后完成的吗? – Cyclone 2013-03-16 16:03:17