Я хочу загрузить состояние как модальное, чтобы я мог наложить состояние без каких-либо других состояний в моем приложении. Так, например, если у меня есть ссылка, как:Загрузка состояния как модального наложения в AngularJS
<a ui-sref="notes.add" modal>Add Note</a>
Я хочу затем прервать изменение состояния, используя директиву:
.directive('modal', ['$rootScope', '$state', '$http', '$compile',
function($rootScope, $state, $http, $compile){
return {
priority: 0,
restrict: 'A',
link: function(scope, el, attrs) {
$rootScope.$on('$stateChangeStart', function (event, toState, toParams) {
event.preventDefault();
});
el.click(function(e){
$http
.get('URL HERE')
.then(function(resp){
$('<div class="modal">' + resp.data + '</div>').appendTo('[ui-view=app]');
setTimeout(function(){
$('.wrapper').addClass('showModal');
},1);
});
});
}
}
}
])
Это успешно предотвращает изменение состояния и загружает URL и добавляет его в качестве модальный к приложению. Проблема заключается в том, что он загружает все приложения снова ...
Как нагрузки только состояние? например файлы шаблонов и соседний контроллер.
состояние выглядит следующим образом:
.state('notes.add',
{
parent: 'notes',
url: '/add',
views: {
'content': {
templateUrl: 'partials/notes/add.html',
controller: 'NotesAddCtrl'
}
}
})
Пример того, как он должен работать, используя JQuery: http://dev.driz.co.uk/AngularModal
Смотрите, как я могу получить доступ к StateA и StateB загрузку через AJAX, который использует API истории изменить URL-адрес, чтобы отразить текущее изменение состояния.
И независимо от того, являюсь ли я на индексе, StateA или StateB, я могу загрузить StateA или StateB как модальный (даже если я уже нахожусь в этом состоянии) и не изменяет URL или текущий контент, он просто накладывает содержимое штата.
Это то, что я хочу, чтобы иметь возможность делать в AngularJS.
Примечание. этот пример не работает с кнопками браузера назад и вперед из-за того, что он является быстрым примером и не использует историю api правильно.
Похоже, вы перешли на другой URL-адрес, и какое состояние вы пытаетесь загрузить точно? –
Да, состояние notes.add. Который можно получить в браузере через URL-адрес или получить доступ через JS в модальном режиме (без изменения URL-адреса (все это происходит, но оно загружает все приложение снова). – Cameron
Вы пробовали предлагаемое здесь решение? Http: // stackoverflow .com/questions/21883559/open-a-modal-in-a-route-in-angularjs-with-angular-ui-bootstrap –