重定向或呈现事件的另一个视图
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);
}
我正在 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);
}