【问题标题】:stop backbone.js default route from firing阻止backbone.js默认路由触发
【发布时间】:2011-05-31 08:22:00
【问题描述】:

我有以下backbone.js 控制器:

App.Controllers.PlanMembers = Backbone.Controller.extend({
    routes: {
        "message/:messageType": "sendMessage",
        "": "index"
    },

    sendMessage: function (messageType) {
        alert(messageType);
    },

    index: function () {
        alert('should not get here');
    }
});

我希望在页面第一次加载时执行操作的索引,我还有另一条路由发送到 sendMessage 操作,并且请求从以下链接很好地路由:

<a class="sms" href="#message/sms" ><img src="/img/buttons/transmit_blue.gif" /></a>

问题是,在它执行了 sendMessage 操作之后,它会再次触发 index 操作,这不是我需要的。

谁能告诉我如何确保只触发 sendMessage 路由?

【问题讨论】:

  • 该错误专门发生在 IE8 中,我可以在屏幕左下角看到一个带有黄色三角形的 javascript 错误,但该错误消息并没有放弃游戏。任何人都可以将我引导到主干源中的哪个位置,每当像这样单击链接时,路由会发生吗?在访问路由方法之前出现错误。

标签: backbone.js


【解决方案1】:

原来这是一个已知的issue

This 解决了这个问题。

我真的以为我疯了!

【讨论】:

    【解决方案2】:

    您添加的代码对我有用,但我不知道您的代码中是否还有其他原因可能导致此问题。您是否可能根据收到的 DOM 事件从视图路由到此操作?如果是这样,则没有 preventDefault 语句有时会导致这种双重渲染(路由)行为。因此,也许可以为您的问题添加一些额外的上下文/细节。

    【讨论】:

    • 原帖中的锚点是动作被调用的方式。来自 href="#message/sms"。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多