我的应用程序不是完整的spa(angularjs + ui-router + aspnet5 mvc6)。所以我有很多链接应该触发页面重新加载服务器对其进行操作。我已经知道我可以使用target="_self"
这样的东西,但这对我的用例来说很痛苦,我必须在我的应用程序中监视所有网址。
所以我要问的是:有没有办法让网页重新加载不匹配任何状态的网址?有点像otherwise
,但只会重新加载不匹配的网址。
我已经查看了ui-router源代码,注册的规则没有公开,即使我想要你也无法检查它们。我的想法是这样的:
$rootScope.$on('$locationChangeStart', function (evt, newUrl, oldUrl) {
// this would be the magic function that will try and match a state.
var isMatched = match(newUrl);
if (!isMatched && oldUrl != newUrl) {
window.location.href = newUrl;
}
});
使用otherwise
:
$urlRouterProvider.otherwise(function ($injector, $location) {
window.location.href = $location.absUrl();
}
这里的问题是我们无法访问旧网址,因此此代码将导致无休止的重新加载周期。如果我可以从内部访问旧URL,那将会有效。
我要做的是以下内容:
我的应用/
的主页不属于ui-router。页面/news*
属于ui-router。我已经将我的服务器配置为捕获所有/news*
并使用包含<ui-view />
的页面进行响应。这一切都很好,没问题。我只想要一个简单的事情发生:当一个锚点与href =&#34; / about&#34;被击中,ui-router无法匹配任何规则,只需重新加载&#34; / about&#34; 的页面。