2014-10-28 2 views
1

Мой вопрос может быть немного сил, так как я не нашел другого подобного случая.AngularJS: Как условно применять анимацию просмотра?

Я хочу выполнять анимацию представлений, но не всегда. До сих пор я имел анимацию в формате .css:

.view.ng-enter{ 
    animation: view_enter @anim-view-dur; 
} 

.view.ng-leave{ 
    animation: view_leave @anim-view-dur; 
} 

Так что, когда я иду с одной страницы на другую, она выполняется.

Именно тот случай, когда я не хочу, чтобы анимационный вид был применен, находится на странице, где работает боковая панель ScrollSpy Bootstrap. Так как это в представлении, я должен был сделать анкерные связи с функцией:

$scope.scrollTo= function (id){ 
     $location.hash(id); 
     $anchorScroll(); 
    }; 

И когда эта функция вызывается, это вызвать вид анимации. Есть ли способ предотвратить запуск анимации просмотра в этом случае?

спасибо.

+1

было бы приемлемо, чтобы предотвратить 'функцию scrollTo' от запуска вида перезагрузки, или что-то, что обязательный? – tasseKATT

+0

@tasseKATT Я попытался использовать '$ scope. $ On ('$ locationChangeStart', function (ev) { ev.preventDefault(); });', но тогда он никогда не меняет маршрут, как ссылки замерзнуть. Есть ли другой способ предотвратить перезагрузку представления? Спасибо –

+0

Трудно сказать, подходит ли он вашему прецеденту, но попробуйте установить 'reloadOnSearch' на' false' для маршрута. Например: 'templateUrl: 'template.html', controller: 'SomeController', reloadOnSearch: false' – tasseKATT

ответ

0

Это работает для меня:

// Routes config 
app.config(function($routeProvider) { 
    $routeProvider 
    .when("/", { 
     templateUrl : "main.htm" 
     controller : "MyController" 
     reloadOnSearch : true   
    }) 
}); 

Вы также можете использовать это в router-ui

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