Угловой набор ui-select default с другого контроллера
Я работаю над созданием страницы редактирования для простой записи задачи.
Одно из полей использует ui-select для генерации выпадающего списка "проектов", которым может быть назначена задача.
Проблема, с которой я сталкиваюсь, заключается в том, что форма заключена в ng-controller="getTask as vm". Однако поле ui-select заключено в ng-controller="Projects as vm", чтобы сгенерировать список.
Я пытаюсь установить значение по умолчанию для поля проекта из контроллера getTask, однако я не могу сделать это, поскольку он выходит за рамки.
Каков наилучший способ сделать $ select.selected изменяемым из контроллера getTask?
Вот код, с которым я имею дело:
<form ng-controller="getTask as vm">
<input type="text" name="task_name" value="{{ vm.task.name }}" />
<div ng-controller='Project as vm' class="form-group select">
<ui-select ng-model="selectedItem">
<ui-select-match>
<span ng-model="vm.formData.prject_id" ng-change="vm.setProject($select.selected.id)" ng-bind="$select.selected.project_name"></span>
<input type="hidden" name="project_id" value="{{ $select.selected.id }}">
</ui-select-match>
<ui-select-choices repeat="project in (vm.projects | filter: $select.search) track by project.id">
<span ng-bind="project.project_name"></span>
</ui-select-choices>
</ui-select>
</div>
</form>
Надеюсь, что это имеет смысл. Любая помощь будет принята с благодарностью.
1 ответ
Посмотрите на $rootScope. Это область действия, определяемая во всех ваших приложениях. Определение "выбранного" объекта - это самый простой способ добиться этого.
https://docs.angularjs.org/api/ng/service/$ rootScope
Обратите внимание, что кто-то будет винить чрезмерное использование объектов rootScoped в больших приложениях, потому что это может привести к путанице.