Это одна из двух проблем. Либо это просто проблема с областью, которую я просто не вижу. Или я злоупотребляю любыми контроллерами и/или директивами.Как получить доступ к значениям уровня контроллера в директиве 'contains' в AngularJS
Предположим, у меня есть отделы, и в форме обновления отдела у меня есть компонент челнока, чтобы выбрать сотрудников в этом отделе.
У меня есть контроллер, что-то вроде:
app.controller('EmployeeChooserController', function ($scope, $http) {
...
// These two arrays are used in a shuttle component I put into a directive
$scope.availablePersonnel = [];
$scope.selectedPersonnel = [];
// These are populated, as appropriate.
// selectedPersonnel[] contains employee objects that are associated with this department
// availablePersonnel[] contains everyone else
...
});
Код для директивы employeeChooser выглядит следующим образом:
myDirectives.directive('employeeChooser', function() {
return {
restrict: 'E',
scope: {
ngModel: '='
},
controller: function ($scope) {
// I need to see availablePersonnel and selectedPersonnel here
// to manipulate with my shuttle code
// There are shuttleLeft() and shuttleRight() methods here
},
templateUrl: '/snippets/employee-chooser.html'
}
});
templateURL ссылаются как сотрудник-chooser.html:
<div ng-controller="EmployeeChooserController">
<select multiple ng-change="shuttleRight(leftSelect)" ng-model="leftSelect" ng-options='p.id as p.name for p in availablePersonnel track by p.id' >
</select>
<select ng-change="shuttleLeft(rightSelect)" ng-model="rightSelect" ng-options='p.id as p.name for p in selectedPersonnel track by p.id'>
</select>
</div>
Я хочу получить доступ к даннымПерсонал и выбранныйПерсонал в директиве, аннотированный в Комментарии. Они, конечно, доступны в $ объеме контроллера. Просто не уверен, как увидеть их в директиве, не взломав что-то уродливое вместе.
Любые советы?
Follow Up: Директива упоминается в форме, что-то вроде:
Где вы указали директиву в своем шаблоне? – Angad
Что делает контроллер 'CrewChooserController'? Для чего нужна изолированная область? То, что показано, не очень хорошо связано с нами, чтобы увидеть более крупный макет. – charlietfl
@charlietfl Извините, что CrewChooser был опечаткой. Я пытался упростить это из гораздо большего набора кода. Я думаю, что я недостаточно разбираюсь в Angular, чтобы знать, нужен ли изолированный объем. Я, конечно, не нуждаюсь в этом для каких-либо других целей. Каким будет альтернатива? – Foswick