当用户尝试将其状态更改为 app 时,我尝试抛出一个登录模式。
当状态更改为应用时,将调用服务loginService。代码进入服务并从stateChange进入无限循环。(运行'和'服务'中的警报'无限运行)在手动停止警报后,模态也被无限地抛出。
状态变化一次又一次地发生是我的感受。
提前感谢任何帮助过的人。 我对angularjs很新,我一直在尝试这些东西。 链接到插件是:http://plnkr.co/edit/7b16Df1d8ubDBuu2qXg3
app.run(function($state,$rootScope,loginService){
$rootScope.$on('$stateChangeStart',function(event,toState,toParams){
if(toState.name==='app'){
event.preventDefault();
alert('in run');
if(loginService.openModal()){
$state.go(toState.name);
return;
}
else
{
$state.go('welcome');
}
}
});
});
app.factory('loginService',['$modal',function($modal){
return{
openModal:function(){
alert("in service");
var modalLoginInstance=$modal.open({
// template:alert('in modal instance'),
templateUrl:'loginModalTemplate.html',
controller:'modalInstanceCTRL'
});
return modalLoginInstance.result.then(function(){alert('in success');return true},function(){alert('in failure');return false});
}
};
}]);
答案 0 :(得分:0)
糟糕!我能够找到错误,我在modalinstance结束时添加了额外的返回。
return modalLoginInstance.result.then(function(){alert('in success');return true},function(){alert('in failure');return false});}
此处的第一次返回需要删除。
正确的是
modalLoginInstance.result.then(function(){alert('in success');return true},function(){alert('in failure');return false});}