Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度ui旋转器$state.go不更改状态?_Javascript_Angularjs_Angular Ui Router - Fatal编程技术网

Javascript 角度ui旋转器$state.go不更改状态?

Javascript 角度ui旋转器$state.go不更改状态?,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我有一个我创建的工厂,它将检查是否发生状态更改以及表单是否脏。如果表单变脏,将显示类似于确认窗口的模式。我的问题是,$state.go()不起作用。我不知道为什么: (function() { var checkStateChangeService = function ($rootScope, $modal) { var addCheck = function ($scope, form, $state) { var modalInstan

我有一个我创建的工厂,它将检查是否发生状态更改以及表单是否脏。如果表单变脏,将显示类似于确认窗口的模式。我的问题是,
$state.go()
不起作用。我不知道为什么:

(function() {

    var checkStateChangeService = function ($rootScope, $modal) {

        var addCheck = function ($scope, form, $state) {

            var modalInstanceCtrl = function ($scope, $modalInstance) {
                $scope.ok = function () {
                    $modalInstance.close();
                };

                $scope.cancel = function () {
                    $modalInstance.dismiss("cancel");
                };
            };

            var removeListener = $rootScope.$on('$stateChangeStart',  function (event, toState, toParams, fromState, fromParams) {


                if (form.$pristine) {
                    return;
                }


                event.preventDefault();
                var message = "There are unsaved changes, do you want to continue?";
                var title = "Unsaved Changes";

                var modalHtml = "<div class=\"panel\">\r\n";
                modalHtml += "<h4 class=\"center\" id=\"modalTitle\">" + title + "<\/h4>\r\n";
                modalHtml += "<div class=\"small-12 columns\">\r\n";
                modalHtml += "<div class=\"modal-body\">" + message + "<\/div>";
                modalHtml += "<div class=\"button-box\">\r\n";
                modalHtml += "<button ng-click='ok()' class=\"tiny\">OK<\/button>\r\n";
                modalHtml += "<button ng-click='cancel()' class=\"tiny\">Cancel<\/button>\r\n";
                modalHtml += "<\/div>\r\n";
                modalHtml += "<\/div>\r\n";
                modalHtml += "<\/div>";

                var modalInstance = $modal.open({
                    template: modalHtml,
                    controller: modalInstanceCtrl
                });

                modalInstance.result.then(function () {
                    $state.go(toState);
                }, function () {
                    $state.go(fromState);
                });

            });

            $scope.$on("$destroy", removeListener);
        };

        return { checkFormOnStateChange: addCheck};
    }

    var module = angular.module("traApp");
    module.service("checkStateChangeService", checkStateChangeService);
}());  
(函数(){
var checkStateChangeService=函数($rootScope,$modal){
var addCheck=函数($scope,form,$state){
var modalInstanceCtrl=函数($scope,$modalInstance){
$scope.ok=函数(){
$modalInstance.close();
};
$scope.cancel=函数(){
$modalInstance.解散(“取消”);
};
};
var removeListener=$rootScope.$on(“$stateChangeStart”,函数(事件、toState、toParams、fromState、fromParams){
if(表格$pristine){
返回;
}
event.preventDefault();
var message=“有未保存的更改,是否继续?”;
var title=“未保存的更改”;
var modalHtml=“\r\n”;
modalHtml+=“”+title+“\r\n”;
modalHtml+=“\r\n”;
modalHtml+=“”+消息+“”;
modalHtml+=“\r\n”;
modalHtml+=“确定\r\n”;
modalHtml+=“取消\r\n”;
modalHtml+=“\r\n”;
modalHtml+=“\r\n”;
modalHtml+=“”;
var modalInstance=$modal.open({
模板:modalHtml,
控制器:modalInstanceCtrl
});
modalInstance.result.then(函数(){
$state.go(toState);
},函数(){
$state.go(fromState);
});
});
$scope.$on(“$destroy”,removeListener);
};
返回{checkFormOnStateChange:addCheck};
}
var模块=角度模块(“traApp”);
服务模块(“checkStateChangeService”,checkStateChangeService);
}());  
我没有看到任何错误,也不知道为什么这是一个问题。我见过几个与我非常相似的例子

我找到了帮助我解决这个问题的方法。我看到的唯一一个小问题是模式在状态改变后关闭。看起来有点奇怪,但它很管用,事实上,这让我想到了,因为看起来国家似乎没有改变

(function() {

    var checkStateChangeService = function ($rootScope, $modal) {

        var addCheck = function ($scope, form, $state) {

            var _this = this;

            var modalInstanceCtrl = function ($scope, $modalInstance) {
                $scope.ok = function () {
                    $modalInstance.close();

                };

                $scope.cancel = function () {
                    $modalInstance.dismiss("cancel");
                };
            };

            var removeListener = function (event, toState, toParams, fromState, fromParams) {


                if (form.$pristine) {
                    return;
                }

                _this.toState = toState;
                _this.toParams = toParams;

                var message = "There are unsaved changes, do you want to continue?";
                var title = "Unsaved Changes";

                var modalHtml = "<div class=\"panel\">\r\n";
                modalHtml += "<h4 class=\"center\" id=\"modalTitle\">" + title + "<\/h4>\r\n";
                modalHtml += "<div class=\"small-12 columns\">\r\n";
                modalHtml += "<div class=\"modal-body\">" + message + "<\/div>";
                modalHtml += "<div class=\"button-box\">\r\n";
                modalHtml += "<button ng-click='ok()' class=\"tiny\">OK<\/button>\r\n";
                modalHtml += "<button ng-click='cancel()' class=\"tiny\">Cancel<\/button>\r\n";
                modalHtml += "<\/div>\r\n";
                modalHtml += "<\/div>\r\n";
                modalHtml += "<\/div>";

                var modalInstance = $modal.open({
                    template: modalHtml,
                    controller: modalInstanceCtrl
                });

                modalInstance.result.then(function () {

                    onRouteChangeOff();                    
                    $state.go(_this.toState.name, _this.toParams);
                }, function (error) {

                });

                event.preventDefault();
            };

            var onRouteChangeOff = $rootScope.$on('$stateChangeStart', removeListener);

       };

        return { checkFormOnStateChange: addCheck};
    }

    var module = angular.module("traApp");
    module.service("checkStateChangeService", checkStateChangeService);
}());
(函数(){
var checkStateChangeService=函数($rootScope,$modal){
var addCheck=函数($scope,form,$state){
var_this=这个;
var modalInstanceCtrl=函数($scope,$modalInstance){
$scope.ok=函数(){
$modalInstance.close();
};
$scope.cancel=函数(){
$modalInstance.解散(“取消”);
};
};
var removeListener=函数(事件、toState、toParams、fromState、fromParams){
if(表格$pristine){
返回;
}
_this.toState=toState;
_this.toParams=toParams;
var message=“有未保存的更改,是否继续?”;
var title=“未保存的更改”;
var modalHtml=“\r\n”;
modalHtml+=“”+title+“\r\n”;
modalHtml+=“\r\n”;
modalHtml+=“”+消息+“”;
modalHtml+=“\r\n”;
modalHtml+=“确定\r\n”;
modalHtml+=“取消\r\n”;
modalHtml+=“\r\n”;
modalHtml+=“\r\n”;
modalHtml+=“”;
var modalInstance=$modal.open({
模板:modalHtml,
控制器:modalInstanceCtrl
});
modalInstance.result.then(函数(){
onRouteChangeOff();
$state.go(_this.toState.name,_this.toParams);
},函数(错误){
});
event.preventDefault();
};
var onRouteChangeOff=$rootScope.$on(“$stateChangeStart”,removeListener);
};
返回{checkFormOnStateChange:addCheck};
}
var模块=角度模块(“traApp”);
服务模块(“checkStateChangeService”,checkStateChangeService);
}());

$state.go(toState)
似乎实际上只让您保持当前状态。您可以在Plnkr.co上创建示例来显示您的问题吗?@AvijitGupta,不应该。检查
toState
对象,名称和url正确无误。此外,我还尝试使用$state.go('some.state'),但这也不起作用。