在Ember.js中,当您单击应用程序内的链接时,可以使用来有条件地阻止转换到目标页面transition.abort()
,例如:
afterModel: function(model, transition) {
if (!model.user.get('facebookAuthenticated')) {
if (confirm("You have to log in with facebook. Continue?")) {
this.controller.send('facebookLogin');
}
else {
transition.abort();
}
}
}
这将取消转换,您将停留在当前页面上。
但是,如果您要进入此路线进入应用程序,例如通过遵循外部URL,该怎么办?然后,默认行为是继续执行transition.abort()
,这将使您空白。完全不能接受。
有没有一种方法可以检测用户是否在此路线上着陆,以便应用程序可以重定向或进行其他操作?
这可以通过读取transition.sequence
属性并使用条件重定向/中止转换来完成。sequence属性返回自登陆页面/加载ember应用以来的当前过渡计数。
if (transition.sequence === 0) {
// Land on page
window.location.replace('http://a.url.com');
}
else {
// Click link in app
transition.abort()
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句