平台上的摘要:它是一个wordpress后端,结合运行ui.router的AngularJS前端,打开了html5模式,并且自站点根目录中的堆栈站点以来基于href =“/”。
问题如下:
1)首先关闭,否则启用之前(“/”)如果未找到状态(例如当用户点击进入wordpress页面或任何未定义为状态的其他内容时),则应用程序将重定向到主页或“/”; 2)关闭之后一切似乎都很好,因为我们被允许通过直接访问url(例如localhost / post / blah)进入非状态页面,但是没有一个链接可以工作了。我们的意思是既不是ui-sref状态链接,也不是常规的工作。浏览器中的窗口地址栏在单击时会更改为相应的链接(或状态),但不会发生任何其他情况。
我们要做的是:
基本上链接是按照它们最初的预期工作,如果链接找到状态然后激活状态,如果没有,则转到预期的链接。
我们尝试过各种各样的解决方案,我们在这里搜索并搜索过,但我们似乎找不到修复方法。最近我们有:
$urlRouterProvider.otherwise(function() {
window.location.href = 'localhost'+window.location.pathname;
});
//一旦窗口打开到页面
,这将以无限循环的页面重新加载结束我们试图发挥作用:
$urlRouterProvider.otherwise(function() {
window.location.href = 'http://google.com'
});
//我们在这里找到了这个代码,它会重定向到另一个页面并且这个有效,但从一开始就有问题。所以假设这个,我们认为解决方案是当没有找到状态时,上面的函数会从链接或地址栏更改或其他任何内容触发相应的URL。那么,有什么建议吗?
答案 0 :(得分:1)
对于那些无状态的URL,请使用
<a href="/link" target="_self">link</a>
答案 1 :(得分:0)
我正在使用"angular-ui-router": "0.2.18"
,以下代码适合我。
app.config(['$stateProvider', '$urlRouterProvider',
function($stateProvider, $urlRouterProvider) {
"use strict";
$stateProvider.state('page1', {
url: "/page1",
templateUrl: "page1/page1.tpl.html",
controller: 'Page1Controller'
}).state('page2', {
url: "/page2",
templateUrl: "page2/page2.tpl.html",
controller: "Page2Controller"
}).state('error', {
url: "/error",
templateUrl: "error/error.tpl.html",
controller: "ErrorController"
});
$urlRouterProvider.otherwise('/error');
});
如果您想要退出Angular上下文并进行硬重定向到另一个网站,可以在错误状态控制器中创建重定向调用。
app.config(['$stateProvider', '$urlRouterProvider',
function($stateProvider, $urlRouterProvider) {
"use strict";
$stateProvider.state('page1', {
url: "/page1",
templateUrl: "page1/page1.tpl.html",
controller: 'Page1Controller'
}).state('page2', {
url: "/page2",
templateUrl: "page2/page2.tpl.html",
controller: "Page2Controller"
}).state('error', {
url: "/error",
controller: "ErrorController"
});
$urlRouterProvider.otherwise('/error');
}]);
app.controller('ErrorController', ['$window',
function($window) {
"use strict";
$window.location.href = "http://www.google.com";
}]);