0

我有一個有兩個組合框的頁面。這是我的看法:如何在角度js頁面加載組合框?

<div ng-init="loadComboBox()"> 
<select class="form-control" ng-model="SelectedItem1" ng-options="employee.FirstName for employeein Employees"> 
<select class="form-control" ng-model="SelectedItem2" ng-options="employeePlan.PlanName for employeePlan in Plans"> 
</select> 
</div> 

這是我的控制器:此控制器調用服務,然後進行API調用。

angular.module('myApp').controller('EmployeeCtrl', 
    function($scope, $http, EmpSvc, ngProgress, PlanSvc) { 

     $scope.Employees= null; 
     $scope.Plans= null; 
     $scope.SelectedItem1 = ''; 
     $scope.SelectedItem2 = ''; 
     $scope.loadComboBox= function() { 
      ngProgress.start(); 
      EmpSvc.getEmployees().then(function(data) { 
       $scope.Employees= data;  
       $scope.SelectedItem1 = $scope.Employees[0].FirstName; 
      }); 

      PlanSvc.getPlans().then(function(plans) { 
       $scope.Plans = plans;  
       $scope.SelectedItem2 = $scope.Plans[0].PlanName; 
      }); 

      ngProgress.complete(); 
     } 

}); 

控制器正確調用服務,我也獲得了範圍值中的數據。 這些值分配給Scope.SelectedItem1Scope.SelectedItem2,但在UI方面它不顯示。我也嘗試做$ scope。$$ apply(),這也不起作用。

組合框,顯示下拉列表中的所有值,但我希望組合框至少填充一個默認值。有人可以幫助我嗎?

基本上我想在頁面加載之前加載組合框,從API

回答

0

我想,你從來沒有直接$ $上的範圍對象使用scope.Employees和$ scope.Plans。 您必須在$ scope上創建空對象。

例如,

$scope.vm = {}; 
$scope.vm.employees = {}; 
$scope.vm.plans = {}; 

我已經創造了在plnkr你的問題的例子。訪問http://plnkr.co/edit/rKyjijGWSL1IKy51b8Tv?p=preview