如何使失败的路由解析承诺加载不同的模板URL
How to make a failed routing resolve promise load a different template URL?
学习Angular并遇到一个我似乎找不到"好"答案的问题。我一直在遵循官方教程,在我正在进行的项目中也有类似的设置。
$routeProvider.when case for phone details会根据在电话列表页面中单击的电话名称获取一个特定的.JSON文件。问题是,如果您键入的电话名没有与之关联的.JSON文件,那么路由仍然会继续,并显示一个空白页面。我正在想办法防止这种情况发生。
我已经下定决心要在什么时候走。但是,我只能阻止视图更改或使用$location.path重定向。这两者似乎都不理想。
如何为并没有JSON文件的手机显示"404页面"视图?在我的脑海中,如果GET请求以404响应,但似乎无法使其工作,我会显示一个不同的templateUrl。
任何帮助都会很棒!
这是我目前掌握的代码:
我的路线处理。
.when('/game/:Game', {
templateUrl: 'views/game-detail.html',
controller: 'GameDetailCtrl',
resolve: {
myData: ["Games", "$location", "$q", "$timeout",'$rootScope', function(Games, $location, $q, $timeout,$rootScope) {
var def = $q.defer();
var path = $location.path().toString().substring(6);
// Games service
Games.get({gameName: path}, function(game, s) {
}).$promise.then(
function(data) {
// found game data
def.resolve(data);
},
function(error) {
// couldn't find JSON file
def.reject(error);
}
);
return def.promise;
}]
}
}).when('/pageNotFound', {
templateUrl: 'views/error.html'
})
根作用域路由更改错误侦听器:
$rootScope.$on("$routeChangeError",
function(event, current, previous, rejection) {
console.log("failed to change routes");
//$location.path('/pageNotFound');
});
好吧,你真的不是这样做的,在这种情况下,你要做的是让你的模板HTML包含成功和失败场景的模板,以及在调用失败或成功时切换状态的ng开关。
此外,我认为如果你也试图从指令中复制这个想法,那也会奏效:Angular.js指令动态模板URL
您可以尝试使用以下代码更改路径:
function(error) {
// couldn't find JSON file
$location.path('/pageNotFound');
}
相关文章:
- 在iframe中加载url并添加一个类
- 如何在不重新加载URL的情况下查询Node.Js的后端并更新页面
- 我如何重新加载URL链接,在我点击提交按钮后它保持不变
- XMLHttpRequest无法加载url Origin访问控制允许Origin不允许null
- 使用javascript在单选按钮选择上加载URL
- WebView加载URL(“javascript:XYZ”)在我的网络视图中执行了好几次
- javascript帖子不做功能但加载url
- AJAX:点击提交按钮加载URL
- 如何在不重新加载当前页面的情况下加载URL
- 如何在chrome扩展中的新选项卡上加载url覆盖的脚本
- 如何使用JQuery.Load访问Div中加载URL的UL“id”,“name”等,以设置JQuery树视图
- 加载 URL 后调用函数
- 如何在 jquery 中加载 url
- HTML5网站在丝绸浏览器中进入全屏模式或在加载URL后在丝绸浏览器中隐藏地址栏
- XMLHttpRequest 无法加载 [url].预检响应无效(重定向)
- jQuery动态内容链接通过php从SQL数据库加载URL,但在刷新时不会加载
- 如何使用浏览器历史记录状态在我的单页 JavaScript 应用程序中加载 URL
- XMLHttpRequest 无法加载 url.预检响应中的访问控制允许方法不允许方法 PUT
- 通过单击包含加载 URL 但不重新加载页面的链接来更改列的内容
- XMLHttpRequest 无法加载 URL.访问控制允许源不允许的源