【问题标题】:Backbone View: function executes several times主干视图:函数执行多次
【发布时间】:2014-02-10 16:29:35
【问题描述】:

我正在运行一个主干脚本,我可以在其中在视图之间来回切换。 使用带有简单路由器导航脚本的下一个和上一个按钮。

在步骤 1 的视图中,我使用此脚本转到下一页:

nextStep: function() {

    //get referrerTypes
    OF.getReferrerTypes();
    OF.getClinics();

    OF.router.navigate('step/2', {trigger: true});

}

现在这是我的问题。当我导航到 step/2 并返回 step/1 时(也是 router.navigate) 不知何故, step/1 中的函数被加载了两次。

因此,当我第二次执行 step/2 时,该函数会运行 nextStep 函数两次。 或者当我第二次来回前进时,它会运行 nextStep 函数三次。

我尝试通过在路由器中执行 step1view.remove 来解决此问题。 我什至做了一个删除。然而,这根本没有帮助。

这是路由器中加载视图的脚本

goToStep1: function() {
    require(['./models/step1Model', './views/step1View'],function(Step1Model, Step1View) {
        if (step1View) {
            step1View.remove();
            delete step1View;
        }

        step1View = new Step1View;
        step1View.render();

    });

}

有人可以帮忙吗? 我真的只需要运行一次函数。

提前致谢!

【问题讨论】:

  • 为什么不直接调用 step1View.render() 而不删除或重新实例化?

标签: javascript jquery backbone.js backbone-views backbone-routing


【解决方案1】:

尝试取消对事件的委托:

step1View.remove();
step1View.undelegateEvents();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多