Я пытаюсь создать приложение, которое имеет 2 разных вкладки, которые отображаются или скрыты в зависимости от 2 кнопок, которые управляются угловыми. В то же время внутри этих вкладок должны быть какие-то независимые формы.Как использовать несколько встроенных/связанных контроллеров AngularJS
Я пытаюсь добавить независимые контроллеры для этих вкладок, но поскольку они «внутри» mainController, я получаю сообщение об ошибке. Возможно, это неправильный подход, но я пытаюсь решить, что является лучшим решением для этого.
Это код, который я ранее получил начало добавления новых контроллеров и получать эти ошибки (, очевидно, содержание вкладок упрощаются):
var app = angular.module('myapp', [])
\t \t \t .controller('MainController', mainController);
function mainController() {
\t this.current_panel = "tab1";
\t this.change_panel = function(new_state){
\t \t this.current_panel = new_state;
\t }
}
<div class="wrapper" ng-app="myapp" ng-controller="MainController as ctrl">
<button ng-click="ctrl.change_panel('tab1')">Tab1</button>
<button ng-click="ctrl.change_panel('tab2')">Tab2</button>
<div class="tab1" ng-show="ctrl.current_panel == 'tab1'">
Tab1
<input type="text" ng-model="ctrl.txt"/>
{{ctrl.txt}}
</div>
<div class="tab2" ng-show="ctrl.current_panel == 'tab2'">
Tab2
<input type="text" ng-model="ctrl.txt"/>
{{ctrl.txt}}
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
Есть ли способ иметь разные контроллеры для этих вкладок? Должен ли я отказаться от возможности управления отображением вкладок с угловым и фокусом только с использованием углового для вкладок? Или у меня есть методы для обеих вкладок внутри одного контроллера?
Создать директиву для вкладок. –
@ HamletHakobyan, но обратите внимание, что это упрощенная версия. Я не знаю, было бы целесообразно иметь директиву в окончательной версии, поскольку она содержала бы много полей формы, методов и т. Д., И она не была бы повторно использована ... – Vandervals
Вы можете создать директиву, которая инкапсулирует контейнер вашей формы (например, вкладки) и использовать трансклюзию для добавления другой формы в этот контейнер. –