角度设置ui从另一个控制器中选择默认值

Angular set ui-select default from another controller

本文关键字:控制器 选择 默认值 另一个 设置 ui      更新时间:2023-09-26

我正在为一个简单的任务条目创建一个编辑页面。

其中一个字段是使用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对象,因为它可能会变得混乱。