Я путаюсь с областью действия в модульном контроллере ui при использовании «контроллера, как в маршрутизаторе ui. Я попытался использовать тот же контроллер (CompanyCtrl) как контроллер для модального, чтобы я мог добавлять новые созданные данные компании в существующий объем компании. В стороне функции openModal я назначаю область действия modalInstance, чтобы я мог использовать этот экземпляр для закрытия или делать все, что захочу, с помощью модального. Однако, когда я нажимаю кнопку закрытия, modalInstance в closeModal не определен каким-то образом.Угловой контроллер в области ui router не изменяется при работе с ui modal
//////// My company module and controller
var CompanyCtrl = function ($modal) {
this.modalTitle = 'Create Company';
this.openModal = function() {
this.modalInstance = $modal.open({
animation: true,
controller: 'CompanyCtrl as lsmodal',
bindToController: true,
template: '<ls-modal><ls-create-company></ls-create-company></ls-modal>'
});
};
this.closeModal = function() {
console.log(this.modalInstance); // undefined ????????
};
};
angular.module('company', []);
angular.module('company').config(function ($stateProvider) {
/* Add New States Above */
$stateProvider.state('master.company', {
url: '/company',
templateUrl: 'modules/company/company.html',
controller: 'CompanyCtrl as company'
});
})
.controller('CompanyCtrl', CompanyCtrl);
//////// ls modal html
<div class="modal-header">
<button type="button" class="close" ng-click="lsmodal.closeModal()">×</button>
<h4 class="modal-title">{{lsmodal.modalTitle}}</h4>
Мои вопросы
Поскольку они разделили контроллер, поэтому все, что я назначен
this/scope
в функции openModal больше нет в closeModal. Это потому, что я создаю еще одну новую область, используя CompanyCtrl as lsmodal. как это исправить?Это хорошая конструкция, использующая один и тот же контроллер? или создать отдельный контроллер для модального. Если создать отдельный контроллер, как я могу добавить новый созданный объект компании в список компаний, чтобы обновить список компаний в html.
спасибо за ваш ответ, почему modalCtrl не обратитесь в любом месте, это код выше. – eded
Моя ошибка .. ей будет присвоено свойство контроллера опций, переданных в открытую функцию. Обновлен ответ ... при условии, что контроллер был назван «ModalCtrl». – GPicazo
ОК, еще одна вещь, я не думаю, что $ scope доступен в стороне от CompanyCtrl ?? -> $ scope.data – eded