Ember.js 有一个很好的机制,可以将数据绑定到视图,在视图中设置触发事件处理,或者使用路由器。但我需要的是能够处理在已经创建的 HTML 代码中触发的事件(通过 PHP,服务器端)。让我给你看一个简单的例子。我有这个代码:
<a id="login" href="#">Login</a>
我需要能够路由/处理对此链接的点击,以便它进入我的 Ember 应用程序。我一直在寻找方法来做到这一点,但我找不到任何方法。
我怎样才能做到这一点?
如果此链接位于 Ember 托管元素的子元素 DOM 元素内,则可以使用action
帮助器:
<a id="login" href="#" {{action doSomeStuff}}>Login</a>
这个doSomeStuff
事件将被发送到你的Ember.Router
,它必须在适当的路由中实现处理程序:
...: Ember.Route.extend({
doSomeStuff: function (router) {
//...
}
}),
如果链接超出了您的应用范围,您可以使用 JQuery 在与应用相关的元素上注册处理程序:
$('a#login').click(function () {
App.router.transitionTo('the.route.path');
});
在App.router
Ember 应用程序初始化时注入,您可以从任何地方访问它。
但是让我说,从路由器外部过渡并不是最佳实践。
最后但同样重要的是,您还可以将上下文传递给transitionTo
调用。