Angularjs AngualrJs:当用户在浏览器地址栏中进入无效状态时,如何检测?
有些相关: 我有搜索结果视图。显然,用户将此URL输入浏览器的地址栏并在其中导航是没有意义的 我想知道她是否这样做&发出警告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时-您的应用程序已重新初始化,因此请使用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路由器状态。您想要实现的是阻止用户从地址栏导航到视图?只需要按一下按钮就可以了?