3

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

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

4

1 回答 1

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() 。

于 2012-06-19T21:21:02.137 回答