Angularjs AngualrJs:当用户在浏览器地址栏中进入无效状态时,如何检测?

Angularjs AngualrJs:当用户在浏览器地址栏中进入无效状态时,如何检测?,angularjs,angular-ui-router,Angularjs,Angular Ui Router,有些相关: 我有搜索结果视图。显然,用户将此URL输入浏览器的地址栏并在其中导航是没有意义的 我想知道她是否这样做&发出警告 但是,如何?如果用户直接进入,则不存在状态转换。那么,如何检测它呢?当用户手动输入url时-您的应用程序已重新初始化,因此请使用app.run跟踪位置: app.module('myModule').run(['$location'], ($location) => { if ($location.path().startsWith('/search'))

有些相关:

我有搜索结果视图。显然,用户将此URL输入浏览器的地址栏并在其中导航是没有意义的

我想知道她是否这样做&发出警告


但是,如何?如果用户直接进入,则不存在状态转换。那么,如何检测它呢?

当用户手动输入url时-您的应用程序已重新初始化,因此请使用app.run跟踪位置:

app.module('myModule').run(['$location'], ($location) => {
     if ($location.path().startsWith('/search')) {
       alert('bad boy')
     }
})
或第一个状态更改为跟踪状态名称:

app.module('myModule').run(['$transitions'], ($transitions) => {
     const deregister = $transitions.onSuccess({}, (transition) => {
        if (transition.to().name === 'search') {
            alert('bad girl')
        }
        deregister();
     })
})

我选择了一项服务,在改变状态时,我已经使用它在控制器之间共享数据。原因是转换状态更改OnSuccess第一次不起作用,如

并祝愿其他人

// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=++=+=+=+=+=+=+=+=+=+=+=
Self.setState = function (currentState, newState) {
    Self.setPreviousState(currentState);
    console.log("Change state from [" + currentState + "] to [" + newState + "]");
    Self.state = newState;
    $state.go(newState);
}

// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=++=+=+=+=+=+=+=+=+=+=+=
Self.getState = function () {
    console.log("Current state is [" + Self.state) + "]";
    return Self.state;
}

// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
Self.getPreviousState = function () {
    return Self.previousState;
}
// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=
Self.setPreviousState = function (previousState) {
    Self.previousState = previousState;
}

什么是ui路由器版本?还有,你说没有状态转换是什么意思,不是一个单独的状态吗?我使用的是最新版本。我今晚回家后会加上版本号。所谓无状态转换,我的意思是,如果您只是在浏览器的URL栏中输入一个状态,那么您不是在从一个ui路由器状态转换到另一个ui路由器状态。您想要实现的是阻止用户从地址栏导航到视图?只需要按一下按钮就可以了?