- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Ember.js 中,如何根据响应有条件地阻止转换?
例如,如果服务器返回 403(在模型 Hook 中),则显示警报并且不转换。
这是一件简单而常见的事情,但我找不到任何文档或指南来做到这一点。
这就是我目前所拥有的
Ember.Route = Ember.Route.extend(InfinityRoute, {
actions: {
error: function(error){
if (error.status === 403) {
this.store.createRecord('notice', {
message: "You are not authorized to view this content. Sorry man."
});
}
}
该通知有效,但我想中止转换。它可能必须移动到另一个位置,因为当运行此错误 Hook 时,转换已经发生
最佳答案
实际上,从 model
Hook (或 afterModel
或 beforeModel
)返回被拒绝的 Promise 本身就会导致转换失败(无法继续) )。所以你不需要做任何特别的事情来中止转换。如果你想弹出一个对话框或其他东西,那么:
model: function() {
var model = this.store.find('my-model');
model . catch(displayErrorMessage);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
return model;
}
如果出于某种原因您更愿意显式中止转换,请使用第二个参数来执行此操作:
model: function(params, transition) {
^^^^^^^^^^
return this.store.find('my-model') .
catch(() => { displayErrorMessage(); transition.abort() });
^^^^^^^^^^^^^^^^^^
}
model
Hook 中的中止转换在指南页面“防止和重试转换”中进行了描述,网址为 http://guides.emberjs.com/v1.10.0/routing/preventing-and-retrying-transitions/ :
ABORTING TRANSITIONS WITHIN
model
,beforeModel
,afterModel
Themodel
,beforeModel
, andafterModel
hooks described in Asynchronous Routing each get called with a transition object. This makes it possible for destination routes to abort attempted transitions.
如果您想捕获所有失败的ajax请求并对其执行某些操作,则可以使用ajaxComplete
调用。这本身不是 Ember,而是 jQuery。在那里放置您的对话框或消息。转换本身将因 ajax 错误而自动中止,导致 this.store.find
的 promise 进入拒绝状态。或者自己中止它。
请注意,如果您正在使用加载子状态,则不可能中止转换并保持原样。已经太晚了。
EAGER VS. LAZY ASYNC TRANSITIONS
...once you provide a destination route loading substate, you are opting into an "eager" transition, which is to say that, unlike the "lazy" default, you will eagerly exit the source routes (and tear down their templates, etc) in order to transition into this substate.
关于javascript - Ember : Prevent transition based on response,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31132690/
Wordpress 有一个名为 Akismet 的垃圾邮件过滤插件,它似乎能够将任何文本块分类为垃圾邮件。唯一需要注意的是,您需要浏览他们的界面,而且他们的数据库/算法不是开源的,也不是现成的。 还有
我想为 hmailserver 上的每个邮箱设置每天发送的最大电子邮件数,以避免垃圾邮件。我正在寻找在 hmailserver 管理和 COM API 中执行此操作的问题。 最佳答案 我相信 hMai
我已经在我的博客上放了验证码,我仍然收到垃圾邮件发送者,是否有脚本可以让他们这样做还是他们手工做? 最佳答案 这取决于您使用的验证码类型。一些用于生成 CAPTCHA 挑战的方法很容易通过光学字符识别
除了验证码之外,还有其他方法可以用于 pastie.org 或 p.ramaze.net 等网络应用程序吗?对于我的口味,CAPTCHA 需要太长时间才能制作小糊状物。 最佳答案 你可以试试 Hone
我有一个页面,登录用户可以在其中发表评论。我想阻止用户同时发表评论以防止垃圾邮件。为此,我希望评论之间有 30 秒的间隔(我应该将时间存储在 session 中吗?) .这个方法好吗? 最佳答案 se
我使用 Angular 5.2 和 Auth0 进行身份验证。登录由 Auth0 在托管登录页面上完成。该页面重定向到我的 Angular 应用程序中的回调页面 myapp.com/login-cal
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
是否可以使用 angularjs 拦截器来阻止请求? $provide.factory('myHttpInterceptor', function($q, someService) { retur
前几天发现了这个网站。您点击一个 DIV(按钮),它就会增加您的分数。 http://clickingbad.nullism.com/ 我自己想,我只需注入(inject) jQuery 并编写一个循
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
通过使用 jQuery 插件验证,我试图验证我的表单。当验证通过时,我希望 JavaScript 使用表单中的值触发,然后停止。浏览新/同一网站时无需实际提交表单。 这可以通过 jquery 验证实现
我有一个表单 Form1,它带有一个创建附加表单的按钮。但是,我只想一次创建 1 个附加表单。以下是我的代码实现。我尝试使用 Focus 属性,但它不起作用。 private void addLoca
我制作了自己的组件,它与一些 Unity 内置组件冲突(例如 Rigidbody 与 Rigidbody2D 冲突)。所以我需要确保这些组件不会一起存在于同一个游戏对象中。有办法吗?自己的组件是什么时
我尝试为 MySQL 数据库编写第一个触发器。它应该在当前时间和“容量”中的给定时间戳的上下文中防止在“course_student”上插入(以及稍后更新) ,但我仍然遇到语法错误。 DELIMITE
我的 PHP 脚本中有以下查询: SELECT SUM(score) + 1200 AS rating FROM users_ratings WHERE user_fk = ? 问题在于,如果用户在表
我有时会忘记从函数中返回结果: def f(*args): # do stuff result = # an expression # oops forgot to return resu
我试图搜索此内容,但没有找到任何答案。让我们看看这个: class Foo { Foo(); Bar a; // 'a', the object, gets created (even
我意识到恶意用户可以在提交表单之前在浏览器中修改表单的 html。例如,切换两个相同类型的输入字段的名称。 我正在创建一个很大程度上依赖于数据库中每个条目之间关系的网站。 如果发生这种情况,可能会危及
我有一个类,在类构造函数中我想检查已传递的几个参数,如果任何参数未通过检查,我想阻止该类初始化。我该怎么做? Class MyClass { MyClass(int no); }; MyClass:
我在 redis 中有一个散列,其中一个字段的值为字符串化数组,每当用户注册一个事件时, 从redis中获取这个字符串化数组 后台解析,将用户的用户名添加到数组中 将数组字符串化并存储回哈希 如果两个
我是一名优秀的程序员,十分优秀!