Ответ 1
укажите, что он имеет родительское состояние, используя ".". соглашение об именовании. (замените "parentState" на имя фактического родителя):.state('parentState.selectModal',...
Я пытаюсь использовать ui-router для запуска модального для определенного состояния, а не для изменения всего представления. Для этого я внедрил слегка адаптированную форму то, что указано в FAQ, поскольку я использую angular-foundation, а не бутстрап. Когда я запускаю состояние, отображается модальный режим, однако он также очищает существующие представления, даже если в моем состоянии не указано никаких видов:
.state('selectModal',
onEnter: ($modal, $state, $sessionStorage) ->
$modal.open(
templateUrl: 'views/select_modal.html'
windowClass: 'tiny'
controller: 'SelectCtrl'
resolve:
options: (Restangular) -> Restangular.all('options').getList()
)
.result.then (result) ->
$sessionStorage.selected = result
$state.go 'resource', id: result.id
)
Должен ли я настраивать представления/родители для этого состояния, например. <div ui-view='modal'></div>
или parent:'main'
(я бы хотел, чтобы он был доступен из любого состояния без изменения этого состояния при переключении)?
укажите, что он имеет родительское состояние, используя ".". соглашение об именовании. (замените "parentState" на имя фактического родителя):.state('parentState.selectModal',...
Рассматривали ли вы включение модального кода в службу и просто вызов этой службы в каждом контроллере, который использует модальный?
angular.module('app').service('modal', function(){
function open(){
$modal.open(
templateUrl: 'views/select_modal.html',
windowClass: 'tiny',
controller: 'SelectCtrl',
resolve: {
options: function(Restangular) { Restangular.all('options').getList() }
}
) // .result... if it generic, otherwise put it in the controller
}
});
angular.module('myapp').controller('main', function($scope, modal){
modal.open().result.then(function(result) {
$sessionStorage.selected = result;
$state.go('resource', id: result.id);
});
}