这是我的 Backbone 应用程序中发生的事情的基本概述:
- 路由器创建一个新的 Profile 视图并传入用户名。
- 初始化新配置文件时,它会使用传入的用户名创建一个新用户。
- 配置文件然后获取有关此用户的详细信息。
- 这就是我迷路的地方...
这些是我的问题:
- 我是按照预期的方式使用 Backbone,还是应该重新考虑结构?
- Profile 视图具有
render
使用 Handlebars 的功能。我需要能够将用户详细信息传递给 Handlebars 以呈现视图。最好的方法是什么? - 我应该在哪里实际调用该
render
函数?
这是我的代码(注意注释的问题):
路由器
var Router = Backbone.Router.extend({
routes: {
":username": "profile"
},
profile: function (username) {
var profile = new Profile({username: username});
}
});
模型
var User = Backbone.Model.extend({
urlRoot: 'http://api.example.com/user'
});
看法
var Profile = Backbone.View.extend({
el: "#content section",
initialize: function(username) {
var user = new User({id: this.options.username});
user.fetch({
beforeSend: authenticate,
success: function() {
//*************************************************************
// How do I make this result available to the render function?
//*************************************************************
},
});
},
render: function() {
alert(JSON.stringify(this.context));
var source = $("#profile").html();
var template = Handlebars.compile(source);
//**********************************************************************
// How do I set context equal to the result of the initialize function?
//**********************************************************************
var html = template(context);
$("#content section").html(html);
}
});