这是我的index.html中的一小段代码:
<a href="#driver.html"><button type="button"
class="btn btn-default btn-large active style="border-right-color: white">Drivers</button></a>
我的router.js 我已经包含了视图
routes: {
'': 'defaultAction',
'drivers':'driver'
}
driver:function(){
console.log("Drivers");
var addview = new AddDriverView({el: $("#content")});
//我想在我的内容中加载视图,所以#content addview.render();
);}
控制台中的输出是Drivers。 现在我想要驱动程序功能加载视图。怎么样?
更新我的观点是
var AddDriverView = Backbone.View.extend({
el: '#addDriver', // addDriver is the id of the form of the view i have created as view.adddriver.htm(it comtains only the form and nothing else.)
events: {
'submit': 'submit'
},
***render: function() {
$(this.el).html();
},***
submit: function(e) {
// some code
}
});
是渲染函数正确吗?我所要做的就是渲染表格......
@kunerd
答案 0 :(得分:1)
在线有很多关于如何实例化Backbone视图的资源。
请阅读:What is a view?
然后查看相应的jsFiddle
编辑:到目前为止,我可以看到,您的问题是您没有在任何地方调用您的观看render()
方法。您可以在路由器初始化后调用它,也可以在视图initialize
方法中调用它。
控制器中的:
AppRouter = Backbone.Route.extend({
...
driver:function(){
console.log("Drivers");
var addview = new AddDriverView({el: $("#content")});
addView.render();
}
...
});
或在视图中:
AddDriverView = Backbone.View.extend({
initialize: function () {
this.render();
}
});
编辑:路由器驱动程序功能的说明:
new AddDriverView({el: $("#content")});
创建AddDriverView类的新实例。 el
属性将此视图绑定到标识为content
的现有DOM元素。如果您没有指定一个Backbone将始终创建一个DIV元素。
方法调用addView.render()
告诉您新创建的视图将其内容呈现到DOM中,并将其呈现到标识为content
的元素中。
有关详细信息,请查看Backbone's Documentation。
您还需要在视图中将#addDriver
内容用作模板。
render: function(){
var template = _.template( $("#search_template").html(),{});
this.$el.html( template );
}
这jsFiddle应该可以帮到你。 这里有一些关于underscore templates的更多信息,因为它在上面使用过。
但是有很多方法可以创建视图以及如何使用路由器。有关详细信息,请查看此question and answer。