У меня есть форма, разделенная на разные вкладки. Они обрабатываются Ui-маршрутизатор:Обращайтесь с различными вкладками формы как одна форма
$stateProvider.state('articledetail', {
url: '/articledetail/:article',
templateUrl: '/articledetail/articleDetail.html',
controller: 'articleDetailController',
controllerAs: 'vm'
})
.state('articledetail.tab1', {
url: '/tab1',
templateUrl: '/articledetail/tab1.html'
})
.state('articledetail.tab2', {
url: '/tab2',
templateUrl: '/articledetail/tab2.html'
})
.state('articledetail.tab3', {
url: '/tab3',
templateUrl: '/articledetail/tab3.html'
})
.state('articledetail.tab4', {
url: '/tab4',
templateUrl: '/articledetail/tab4.html'
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<form class="form-horizontal" name="editForm" novalidate>
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" ng-class="{active: vm.$state.current.name == 'articledetail.tab1'}"><a ui-sref="articledetail.tab1" aria-controls="tab1" role="tab" data-toggle="tab">Algemene info</a></li>
<li role="presentation" ng-class="{active: vm.$state.current.name == 'articledetail.tab2'}"><a ui-sref="articledetail.tab2" aria-controls="tab2" role="tab" data-toggle="tab">Info 2</a></li>
<li role="presentation" ng-class="{active: vm.$state.current.name == 'articledetail.tab3'}"><a ui-sref="articledetail.tab3" aria-controls="tab3" role="tab" data-toggle="tab">Info 3</a></li>
<li role="presentation" ng-class="{active: vm.$state.current.name == 'articledetail.tab41'}"><a ui-sref="articledetail.tab4" aria-controls="tab4" role="tab" data-toggle="tab">Info 4</a></li>
</ul>
<div class="tab-content col-xs-7">
<div ui-view></div>
<br />
<div class="col-xs-7">
<button class="btn btn-primary pull-right" ng-disabled="editForm.$invalid" ng-click="vm.test(editForm)">Artikelgegevens aanpassen</button>
</div>
</div>
</form>
В моем методе контроллера после события щелчка, editForm содержит только поля вкладки, которые отображаются, а не поля из других вкладок. Однако я хотел бы иметь одну кнопку отправки, чтобы обрабатывать ВСЕ поля из разных вкладок.
Есть ли (простой) способ достичь этого?
EDIT: Это моя маршрутизация в настоящее время:
$stateProvider.state('articledetail', {
url: '/articledetail/:article',
templateUrl: '/articledetail/articleDetail.html',
controller: 'articleDetailController',
controllerAs: 'vm',
views: {
'tab1': {
templateUrl: '/articledetail/tab1.html'
},
'tab2': {
templateUrl: '/articledetail/tab2.html'
},
'tab3': {
templateUrl: '/articledetail/tab3.html'
},
'tab4': {
templateUrl: '/articledetail/tab4.html'
}
}
});
, то вы должны иметь все формы элемент должен присутствовать на DOM при отправке формы, в настоящее время вы показываете каждый вид в то время, используя 'щ-view' –
Но что это самый простой способ для достижения этой цели? – Bv202
загружать все представления в то же самое время ... только показать и скрыть их на основе щелчка вкладки –