2012-06-19 16 views
3

当用户点击一个链接时,在Backbone中是否有首选触发Router.navigate的方法?Backbone首选触发链接点击的方式?

例如,模板可能有链接<a href="/logout">Log Out</a>。首选的方法是使用自定义类,并将视图处理程序附加到视图中的该类上?这似乎会产生大量重复的代码,所以我正在寻找更好的方法。

回答

3

处理这种事情的方式是扩展Backbone对象(在这种情况下是视图)。你会注意到在骨干文档中这是受到鼓励的,并且在极简主义代码基础上是必要的。我建议查看Marionette(在Github上)和Backbone patterns网站,以获得扩展骨干核心的好方法。

例如,也许你用扩展的方法查看,电汇了导航处理程序,只要你喜欢:

Backbone.View.prototype.wireupNavs = function() { 
    var that = this; 
    this.$el.find("a[role=nav]").each(function() { 
     var target = $(this).attr('href'); 
     that.bind("click", router.navigate(target); 
    }); 
} 

那么任何你想为骨干的导航元素的标签,你会只是用角色=“nav”属性来装饰;并调用this.wireupNavs()中的初始化程序函数的相应视图。

+1

btw,'this. $ el.find(...)'相当于'this。$(...)'。所以可以这样写:'this。$(“a [role = nav]”)。each(function(){...' – theotheo

相关问题