我正在为一个简单的任务条目创建一个编辑页面。
其中一个字段是使用ui select生成一个下拉列表,其中列出了可以分配任务的"项目"。
我遇到的问题是表单被包装在ng-controller="getTask as vm"中但是,ui选择字段被包装在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>
希望这是有道理的。如有任何帮助,我们将不胜感激。
查看$rootScope。它是通过所有应用程序定义的范围,在其中定义"选定"的对象是实现这一点的最简单方法。
https://docs.angularjs.org/api/ng/service/$rootScope
请注意,有些人会指责在大型应用程序中过度使用rootScoped对象,因为它可能会变得混乱。