我需要检查我当前的URL是否与状态URL匹配(使用ui-router)。这里的问题是我动态加载我的所有状态,因此当用户刷新页面时,此URL尚未加载,因此我被重定向到其他URL。
我打算在 otherwise
函数中加载我的所有状态,然后检查那个用我当前的URL计算的状态并立即加载它,所以也许这样我未被重定向到我的default
网址。
示例:
我当前的网址: asd / 5 / it-is-a-slug
我的州网址: / asd /:id /:slug
有什么想法吗?
答案 0 :(得分:1)
我要说的是,使用内置的UI-Router是这样的
$urlRouterProvider.deferIntercept(defer)
。检查其他一些:
重点是
禁用(或启用)延迟位置更改拦截。
如果您希望自定义同步URL的行为(例如,如果您希望延迟转换但保留当前URL),请在配置时调用此方法。然后,在运行时,在配置了自己的$ locationChangeSuccess事件处理程序之后调用$ urlRouter.listen()。
在 config()
阶段,我们将推迟执行:
app.config(function ($locationProvider, $urlRouterProvider, $stateProvider) {
$urlRouterProvider.deferIntercept();
...
在 .run()
阶段,我们将加载动态内容:
$http
.get("myJson.json")
.success(function(data)
{
angular.forEach(data, function (value, key)
{
var state = {
"url": value.url,
"parent" : value.parent,
"abstract": value.abstract,
"views": {}
};
angular.forEach(value.views, function (view)
{
state.views[view.name] = {
templateUrl : view.templateUrl,
};
});
$stateProviderRef.state(value.name, state);
});
// Configures $urlRouter's listener *after* your custom listener
$urlRouter.sync();
$urlRouter.listen();
});