Mar*_*dão 3 ember.js ember-data
(同样的文字也在EmberJS讨论区开放)
我有以下路线:
App.IndexCrmPersonEditRoute = Ember.Route.extend({
model: function(params) {
var person = this.store.find("person", params.id);
return person;
},
});
Run Code Online (Sandbox Code Playgroud)
它接收以下路由器路径
...
this.route('edit', { path: ':id'}); // edit person
...
Run Code Online (Sandbox Code Playgroud)
这适用于现有人.当对象不存在时,API返回404,其中包含以下内容:
{"person": null}
Run Code Online (Sandbox Code Playgroud)
JS中发生错误" 加载路径时出错:未定义 ".
我想知道返回404 + person = null是否是正确的方法,并且是否可以显示消息并将用户重定向回上一个URL(如果响应为404,甚至不移动它们).
任何的想法?
好吧,多亏了上面的2个答案,我找到了路由器的"错误"操作的解决方案,我将在下面介绍.
文档不是很好,但这是我实现的:
我写了一个通用的Route类,用"错误"动作进行扩展:
App.NotFoundObjectRoute = Ember.Route.extend({
actions: {
error: function(reason, transition) {
if (reason.status == 404)
return true
else
this.transitionTo('r500');
},
},
});
Run Code Online (Sandbox Code Playgroud)
我希望每条路线都有"未找到"beheaviour,我写道和错误路线,如下所示(注意"错误"这个词自动取代"编辑",如同EmberJS的标准:
App.IndexCrmPersonEditRoute = App.NotFoundObjectRoute.extend({
// ...
});
App.IndexCrmPersonErrorRoute = Ember.Route.extend({
// Called for errors like 404 (not found) and 500 (server error)
});
Run Code Online (Sandbox Code Playgroud)
这转而写了一个错误视图,如下所示:
App.IndexCrmBusinessErrorView = Em.View.extend({
templateName: "r404",
});
Run Code Online (Sandbox Code Playgroud)
我使用了标准的"r404"模板,但正如您所看到的,对于每种不同的对象类型,它可能是不同的模板.
"r500"路由在服务器错误(404除外)的情况下起作用.
我希望这对其他人有所帮助.
| 归档时间: |
|
| 查看次数: |
2305 次 |
| 最近记录: |