试试这个:
编辑:这是一个 Backbone Boilerplate 应用程序,所以我更新了答案:
问题是如何在渲染后获取视图的“Partials”模块的$el。我尝试定义一个模块并将一个 Backbone 视图声明为其成员。然后我创建一个视图实例,然后通过 view.render().$el 链接方法调用。它成功获取视图的 $el ,因为在 Backbone Boilerplate render() 中具有其默认行为。本机主干渲染功能旨在被覆盖。
我的简单例子:
模块声明(模块/用户):
define(["app"],
function(app){
var User = app.module();
User.Views.Item = Backbone.View.extend({
template: "user/item",
tagName: "li",
serialize: function(){
return {model: this.model};
},
initialize: function(){
this.listenTo(this.model, "change", this.render);
}
});
return User;
});
项目模板 (templates/user/item.html)
<a href="#"><%=model.get("name")%></a>
尝试在路由器初始化调用中获取视图的 $el
define([
// Application.
"app","modules/user"
],
function(app, User) {
// Defining the application router, you can attach sub routers here.
var Router = Backbone.Router.extend({
initialize: function(){
app.useLayout("main-layout").setViews({
".users":new User.Views.Item({model:new Backbone.Model({"name":"cccc"})})
}).render();
//try to access $el. it works
console.log(new User.Views.Item({model:new Backbone.Model({"name":"cccc"})}).render().$el);
},
routes: {
"": "index",
"user/:name":"user"
},
index: function() {
},
user: function(){
}
});
return Router;
});
最后我得到了$el:
希望这对你有帮助。