使用run()函数

时间:2016-08-12 09:24:02

标签: javascript angularjs forms angularjs-scope angular-ui-router

我使用角度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或任何其他方法来了解当前状态中的表单是否脏。

0 个答案:

没有答案