2015-04-10 7 views
0

Я пытаюсь бросить мода входа, когда пользователь пытается изменить свое состояние на приложение.

Служба loginService вызывается, когда состояние изменяется на приложение. Код входит в сервис и переходит в бесконечный цикл из stateChange. (Предупреждения «в запуске» и «в службе» выполняются бесконечно) после остановки предупреждений вручную модально также запускается бесконечно.

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

Я предлагаю вам попытаться уменьшить это вплоть до самого маленького примера, который воссоздает эти симптомы. – thecoshman

ответ

0

Oops! Я смог выяснить ошибку, я добавил дополнительный в конце 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});} 
Смежные вопросы