У меня есть директива, которая заменяется формой. Эта форма привязана к объекту vm.customer
.Как получить доступ к объекту директивы в родительском контроллере?
Предполагая, что эта директива будет использоваться во многих частях приложения, и каждый объект vm.customer
должен иметь свою собственную область действия, какими способами родительский контроллер может получить доступ к своему объекту vm.customer
?
// Директива
(function() {
'use strict';
angular
.module('rugapp')
.directive('customer', customer);
function customer() {
return {
scope: {
},
restrict: 'E',
templateUrl: 'rugapp/directives/customer-directive.html',
replace: true,
controller: 'CustomerController',
controllerAs: 'vm'
};
}
})();
// Просмотр
<div class="scrollable">
<div class="scrollable-content section">
<customer></customer>
</div>
</div>
// Родитель контроллер
(function() {
'use strict';
angular
.module('rugapp')
.controller('CreateScheduleController', CreateScheduleController);
function CreateScheduleController() {
var vm = this;
activate();
function activate() {
}
}
})();
Пожалуйста, поправьте меня, если я ошибаюсь, но мне кажется, как родительский контроллер устанавливает объект человека здесь. Я ищу, чтобы получить объект человека из директивы в родительский контроллер. Это все еще актуально? –
Да, это все еще актуально, потому что это двусторонняя привязка. Таким образом, вы можете изменить '$ scope.person' либо в родительском, либо в директиве. Значение будет синхронизироваться между ними. Подробнее об этом можно узнать в [Угловая директива] (https://docs.angularjs.org/guide/directive), раздел «Изоляция области действия директивы». – lvarayut
Отлично, спасибо. Есть ли что-то особенное, что нужно сделать, когда директива использует синтаксис controllerAs? Например, вместо 'person = '{name: ...' У меня есть 'person =' {vm.customer.name:" ", vm.customer.адрес: "", ... '} ', который, похоже, не работает должным образом. –