4

是否有可能向路由事件添加自定义操作(基本上是任何一段 JS 代码)?

有一个应用程序需要更改应用程序“外部”页面的某些部分。是的,页面的那部分应该在应用程序中,但不是。所以,我需要在一些路由事件上稍微改变“外部”DOM。例如,当我处于索引状态时,某处有一个空元素,当我移动到另一个状态时,该元素将其内容更改为“返回”并激活。另外,我想将 ember 路由操作绑定到该元素上的 onClick 事件。

我试图找到这样的东西,但似乎什么都没有。我找到了这个,但它根本没有解决我的问题: 如何在 Ember.js 中将事件直接绑定到现有 HTML,而不使用任何类型的视图?

谢谢你的时间。

4

1 回答 1

6

enter了解您可以在路线内处理的事件可能会有所帮助:

other: Ember.Route.extend({
    route: '/other',
    connectOutlets: function(router, context) { /* ...? */ }),
    enter: function(router) {
        // ...
    }
})

不确定是否有更适合您需求的解决方案。

更新:如果您使用action帮助程序,单击事件将根据您的需要触发操作。示例 - 在模板中:<a {{action gotoOtherState href="true"}}>Go to other state</a>,以及您所在的路线(或祖先......在这种情况下为索引路线):gotoOtherState: Ember.Route.transitionTo('path.to.otherState')

href=true<a>标签的可选触摸。您还可以定义自己的转换:

gotoOtherState: function(router, event) {
    // Setup? Teardown?
    // ...
    router.transitionTo('path.to.otherState');
}

注意:如果你在你的动作助手中传递一个上下文(例如{{action gotoOtherState this}}),你可以通过事件访问它:router.transitionTo('path.to.otherState', event.context);

更新 2: enter是一个私人钩子,activate而是一个新的公共钩子(见http://emberjs.com/blog/2013/02/15/ember-1-0-rc/

于 2012-08-20T14:28:23.663 回答