2017-01-17 1 views
1

Я пытаюсь отменить изменение переходов $ при определенных условиях с помощью ui-router.

В моем блоке запуска, у меня есть следующий код:

$transitions.onStart({ from: 'createCatalog.previewStyles'}, function(trans) { 
     var from = trans.from(), 
      to = trans.to(); 
     previewStylesService.checkSave() 
     .then(function success() { 
      return $state.target(to); 
     }, function err() { 
      return $state.target(from); 
     }); 
    }); 
функция

My previewStylesService checkSave выглядит следующим образом:

function checkSave() { 
     var deferred = $q.defer() 
     if (dataChanged) { 
      if (confirm('Would you like to save the changes made to the catalog?')) { 
       catalogService.prepCatalogSave() 
        .then(function success() { 
         deferred.resolve(); 
        }, function err() { 
         deferred.reject(); 
        }) 
      } else { 
       deferred.resolve(); 
      } 
     } else { 
      deferred.reject(); 
     } 
     return deferred.promise; 
    } 

Затем на основе вышеуказанных условиях $ переход будет либо принять место или будет отменено. Проблема в том, что даже если обещание вышеописанного кода отклонено, состояние по-прежнему изменяется в первоначально запрошенном состоянии. Как я могу «отменить» изменение состояния в этом случае?

ответ

1

Я знаю, что может быть поздно помочь вам, но это может помочь другим. Я столкнулся с одной и той же проблемой, и примерно через пару часов исследований/чтения документов я пришел к выводу, что обратные вызовы $ transitions.onBlaBla имели возвращаемое значение, которое может быть истинным (переходное возобновление normaly), false (переход отменен) или обещание (transitionService будет ждать этого отказа обещание/решить, чтобы решить, если это необходимо, чтобы сделать переход или не

Вы могли бы попытаться вернуть

return previewStylesService.checkSave() 

, чтобы посмотреть, что происходит или попытаться делайте это по-другому с возвратом true/false и некоторыми другими кодовыми крючками

Здесь ссылка результата крючков что возвращение вашей OnSuccess Callback: https://ui-router.github.io/ng1/docs/latest/modules/transition.html#hookresult

 Смежные вопросы

  • Нет связанных вопросов^_^