重定向或呈现事件的另一个视图

Redirect or render another view on event

我正在 Backbone 中构建一个小的 CRUD 应用程序,但由于需要从一个视图重定向到另一个视图,我遇到了一些困难。我的应用程序由一个 layout 视图和一个路由器组成,在该视图中呈现其他视图。这是:

var router = Backbone.Router.extend({
     routes: {
         '': 'home',
         'resumes/:id': 'showResume'
     },

     home: function () {
         // renders a index view with my collection
         this.layout.render(new ResumeList({collection: resumes});
     },
     showResume: function () {
         if (!this.fullResume) {
             this.fullResume = new FullResume({model: new Resume()});
         }
         // allowing to navigate via url with model id
         this.fullResume.model.set('id', id).fetch({
             context: this,
             success: function () {
                 this.layout.render(this.fullResume);
             }
         });
     }
});

然后,在我的 FullResume 视图中,我有一个 delete 事件,它破坏了模型。开始了:

var FullResume = Backbone.View.extend({
    // tagName and other stuff
    events: {
        // other events
        'click #delete': 'deleteResume'
    },
    // initialize, render and other functions
    deleteResume: function () {
        this.model.destroy({
            success: function (res) {
                console.log('DELETE model' + res.toJSON().id);
            },
            error: function () {
                console.log('Failed to DELETE');
            }
        });
    }
});

上面的函数完美运行并删除了模型,但在删除模型后它仍然保留在它的视图中,直到我手动导航到某个地方。我读了一些书并尝试管理如何在此事件后呈现主视图或重定向到它,但没有成功。

您正在查找 trigger 选项设置为 true 的 http://backbonejs.org/#Router-navigate 函数。

举个例子:http://jsfiddle.net/x3t7u5p0/

单击 "Home" 或 "About" 链接将更改视图,但是我添加了延迟的编程视图更改,当“关于”视图呈现时,它会在延迟后切换回主页

  render: function () {
      this.$el.html(this.template);
      _.delay(function() {
          appRouter.navigate('home', {trigger: true});
      }, 500);
  }