在事件

时间:2016-10-07 14:32:05

标签: javascript jquery backbone.js

我在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');
            }
        });
    }
});

上述功能完美运行并删除模型,但在删除模型后,它仍然保留在其视图上,直到我手动导航到某处。我读了一下,试图管理如何在此事件后呈现主视图或重定向到它,但没有成功。

1 个答案:

答案 0 :(得分:2)

您正在寻找http://backbonejs.org/#Router-navigate功能,并将trigger选项设置为true。

以下是一个例子:http://jsfiddle.net/x3t7u5p0/

点击" Home"或"关于"链接将更改视图,但是我添加了延迟的程序化视图更改,当关于视图呈现时,它将在延迟后切换回Home

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