重定向或呈现事件上的另一个视图
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"链接会改变视图,但是我添加了一个延迟的编程视图更改,当About视图渲染时,它会在延迟后切换回Home
render: function () {
this.$el.html(this.template);
_.delay(function() {
appRouter.navigate('home', {trigger: true});
}, 500);
}
相关文章:
- 在Angular ui路由器中,如何将事件从一个视图发送到另一个视图
- 遍历SC.ManyArrray以创建要附加到SproutCore中的另一个视图的自定义视图
- ASP.NET angularjs重定向到控制器的另一个视图
- 从Backbone中的另一个视图调用新视图
- 想要使用链接将数据发送到另一个视图
- Couchdb:是否可以从另一个视图中查询一个视图
- 如何在另一个视图中获取元素的引用id-UI5
- 获取Backbone中另一个视图的id
- 将事件从一个视图触发到另一个视图
- 如何从另一个视图上编写的 JS 代码重定向到控制器,并将 JSON 对象随之传递
- 如何根据另一个视图中的更改删除视图?骨干
- 从 KnockoutJS 视图模型中获取值,然后在另一个视图模型上调用它
- 如何在 jquery 中设置另一个视图的正文内容
- 重定向到剃须刀应用程序中的另一个视图
- 将全局变量传递给另一个视图主干
- 一个视图中的角度按钮在另一个视图中开始倒计时
- 在 backbonejs 中从一个视图导航到另一个视图
- 控制器逻辑仅在您处于另一个视图中时才执行
- 如何在单独的文件中从另一个视图调用主干视图函数
- 无法在另一个视图中显示通过AJAX调用获得的数据