Gav*_*ulz 6 javascript backbone.js
我有以下路由器:
appRouter = Backbone.Router.extend({
routes: {
'': 'inbox',
'inbox': 'inbox',
'discussions_engagement': 'contacts',
},
inbox: function(page) {
console.log('inbox');
var page = page || 1;
engage.app.hydrateInbox(page, engage.app.showInbox);
},
....
};
Run Code Online (Sandbox Code Playgroud)
当我在http:// [...]/#inbox上,我打电话
appRouter.navigate('inbox', {trigger: true});
Run Code Online (Sandbox Code Playgroud)
收件箱操作不会触发我想要实现的内容.现在我已经看过Backbone的来源(https://github.com/documentcloud/backbone/blob/master/backbone.js#L1027),我发现它不支持我想要做的但是有一些方法可以实现这个目标吗?
我将在您的engage.app对象中创建一个事件管理器,如下所示:
var vent = _.extend({}, Backbone.Events);
Run Code Online (Sandbox Code Playgroud)
然后在您的路由器中对收件箱路由执行以下操作:
vent.trigger('inbox:show', page);
Run Code Online (Sandbox Code Playgroud)
并在engage.app对象中处理该事件,执行路由处理程序中以前的代码。
appRouter.navigate
现在,您可以触发相同的事件,而不是调用。
另外,从该处理程序中,您可以在appRouter.navigate('inbox');
不传递 true 的情况下进行调用。现在,您可以让应用程序达到您想要的状态,而无需尝试强制路由。
归档时间: |
|
查看次数: |
5391 次 |
最近记录: |