2015-11-21 102 views
0

我正在爲簡單任務條目創建編輯頁面。Angular從另一個控制器設置ui-select默認值

其中一個字段是使用ui-select生成任務可以分配給的「項目」的下拉列表。

我遇到的問題是表單被封裝在ng-controller =「getTask as vm」 但是,ui-select字段被包裝在ng-controller =「Projects as vm」中以生成列表。

我試圖從getTask控制器設置項目字段的默認值,但我不能這樣做,因爲它超出了範圍。

什麼是從getTask控制器進行$ select.selected變更的最佳方法?

這裏是我處理的代碼:有道理

<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> 

希望。 任何幫助將不勝感激。

回答

0

看看$ rootScope。它是通過您的所有應用程序定義的範圍,在其中定義您選擇的對象是實現此目的的最簡單方法。

https://docs.angularjs.org/api/ng/service/ $ rootScope

注意,有人會指責過度使用rootScoped對象的大型應用程序,因爲它會導致混亂。