当用户点击链接时,是否有一种在Backbone中触发Router.navigate
的首选方式?
例如,模板可能包含链接<a href="/logout">Log Out</a>
。首选方法是否真的使用自定义类并在视图中将单击处理程序附加到该类?这似乎产生了大量重复的代码,所以我正在寻找更好的方法。
答案 0 :(得分:3)
处理这种事情的方法是扩展Backbone对象(在本例中为View)。你会在Backbone文档中注意到这是鼓励的,并且考虑到它的极简主义代码库是必要的。我建议查看Marionette(在Github上)和网站Backbone patterns,以获得扩展Backbone核心的好方法。
例如,您可以使用随意连接导航处理程序的方法扩展 View :
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);
});
}
然后你想要作为Backbone nav元素的任何 标签,你只需用 role =“nav”属性装饰;并在相应视图的初始值设定项函数中调用 this.wireupNavs()。