我使用角度ui-router来定义状态,我希望检查当前状态下的表单是否脏,并在用户在ui-router状态之间导航时提示用户。当用户尝试从一个状态导航到另一个状态时,我想检查当前状态中的表单是否是原始状态,并提示他是否真的想要传播到下一个表单。我已经编写了一个常用的运行函数来处理这个问题。
angular.module('module')
.run(function ($rootScope, $compile, $templateRequest) {
$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
if (fromState.name.length > 0) {
$templateRequest(fromState.templateUrl)
.then(function (html) {
var compiledElement = $compile(html)($rootScope);
console.log(compiledElement.find('form'));
});
}
if (fromState.name.length > 0 && !confirm('You have unsaved changes, go back?'))
event.preventDefault();
});
});
我想获取当前UI-Router状态的范围,以便我可以检查表单pristine或任何其他方法来了解当前状态中的表单是否脏。