根据依赖关系加载不同的模板解决使用 ng-route 时出错
Loading different templates based on dependency resolve error when using ng-route
假设我有一个user
路由,并且我已经像这样配置了$routeProvider
:
$routeProvider.when("/user/:id", {
templateUrl: "templates/user.html",
controller: "userController",
resolve: {
user: function(User, $route){
// Assume that User.get(id) will return a promise for user data
return User.get($route.current.params.id);
}
}
});
//...
问题:
在某些情况下,user
可能无法解决。例如,用户可能不存在(404),或者当前用户可能无权访问此用户的页面(403),等等。像大多数网站一样,我想使用我自定义的错误页面来处理这些类型的错误。问题是模板已经被获取,我无法将其更改为"templates/errors/404.html"。
注1:
我不想将路由重定向到"/pageNotFound.html"之类的东西,因为这显然是不对的!我希望路由在加载"404.html"模板而不是"user.html"时保持在"/user/{id}"。
注2:
我想出的一个解决方案是设置一个错误拦截器,并使用一些有关错误的数据来解决承诺,通过它我可以检测控制器上的错误并将其暴露给scope
。因此,我可以在"user.html"的根目录中使用一个ng-switch
,该在正常情况下和不同的错误情况下切换到不同的模板。
但我实际上不喜欢这个解决方案,因为我想为所有路由设置一个全局 404 模板,因为找不到它们的资源而无法解析它们的依赖项。
templateUrl
可以是一个函数,它将当前参数(:id)的对象作为参数,但该函数在解析之前被调用。因此,您可以根据那里的 id 进行一些基本检查,但不能使用解析的服务调用的结果。
相关文章:
- 如何从 angularjs ng-route 中删除哈希 #
- 我无法使用ng-route指令查看html内容
- 任何带有ng-标签的Angular JS解决方案
- (AngularJS / ng-route)如何获取模板的输入
- 根据依赖关系加载不同的模板解决使用 ng-route 时出错
- ng视图未显示Route(angularjs)
- 如何在加载带有ng-include的分部之前解决XHR请求
- 与其他解决方案相比,内置的ng表分页在性能上存在问题
- Ng-route工作不正常
- Ng-route在pc中工作,但在模拟器(cordova)中不工作
- AngularJS中的ng-route不起作用
- 如何调试Angularjs的ng-route和Threejs的崩溃/问题
- 如何使用ng-repeat指令解决性能问题
- 无法解决ui-route中的状态错误
- AngularJs - ng-route不能与top位置一起工作
- 停止CSS背景幻灯片显示所有带有ng-route的页面
- Angular加载视图时的js - ng-view - ng-route - condition
- Angular的ng-route $route.下一页滑动之间的页面浏览量
- Angular ng Route没有'在一个非常简单的例子中是行不通的
- 使用Angular和ng-route将一个视图嵌入到另一个视图中