我刚刚在 Giraffe 中发现了路由器事件的方法。可以按如下方式触发应用程序事件:
路线:{ 'childView/:name': '路线:childView' // 'someHashLocation/:andItsParams': 'some:appEvent' },
由于通常路由事件由回调函数处理,我想知道从非 Giraffe Backbone 应用程序触发这些路由事件需要什么?在这种将路由器与应用程序模块解耦的过程中,您看到了什么问题?
我刚刚在 Giraffe 中发现了路由器事件的方法。可以按如下方式触发应用程序事件:
路线:{ 'childView/:name': '路线:childView' // 'someHashLocation/:andItsParams': 'some:appEvent' },
由于通常路由事件由回调函数处理,我想知道从非 Giraffe Backbone 应用程序触发这些路由事件需要什么?在这种将路由器与应用程序模块解耦的过程中,您看到了什么问题?
由于通常路由事件由回调函数处理,我想知道从非 Giraffe Backbone 应用程序触发这些路由事件需要什么?
任何引用路由器的东西都可以cause
路由事件,例如:
var app = new Giraffe.App({routes: {'post/:id': 'route:post'}});
// Trigger a route with an app reference
app.router.cause('route:post', 42); // => location changes to #post/42
// => 'route:post' triggered on `app`
Giraffe.Router#cause
就像Backbone.Events#trigger
添加导航到相应的路线一样,如果存在,并且router
触发事件app
,而不是本身。
任何带有应用引用的东西都可以监听路由事件:
// Handle the route from outside the Giraffe app
app.on('route:post', function(id) {...});
// Other `Backbone.Events` instances can listen to the Giraffe app
var myOtherApp = new Backbone.View;
myOtherApp.listenTo(app, 'route:post', function(id) {...});
除了路由事件,该应用程序还充当方便的事件中心。所有 Giraffe 对象都有一个引用this.app
(如果已创建)并支持快捷方式appEvents
绑定。
在这种将路由器与应用程序模块解耦的过程中,您看到了什么问题?
(我是作者之一)我们公司的我们和我个人的经验都没有发现这是一个问题,但是可以想象这种基于事件的系统无法提供所需的协调水平的情况。我们考虑过使用过滤器等功能改进路由处理,但还没有找到时间。如果您有建议,我们很乐意听取他们的意见!