2017-04-24 73 views
0

我一直在研究一个项目,并试图使用AngularJs创建一个下拉菜单。但我无法获得菜单上的employeId信息来选择。如果需要更多的代码细节,我可以添加。AngularJS - 使用ngRepeat的下拉菜单

下面是它的定义之前,image of dropdownmenu

Delete.html

 <div class="dropdown"> 
     <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="drop"> 
      {{selectedItem}} 
      <span class="caret"></span> 
     </button> 
     <ul class="dropdown-menu" aria-labelledby="dropdownMenu1"> 
      <li ng-repeat="a in emps"> 
       <a ng-click="dropboxitemselected(a)">{{a.Id}}</a> 
      </li> 
     </ul> 
    </div> 

Demo.js

MyApp.controller("DeleteController", function ($scope, EmpApi) { 
    $scope.selectedItem = "Select Employee"; 
    $scope.isDeleteItemVisible = false; 
    getEmployees(); 
    function getEmployees() { 
     EmpApi.getEmployees().then(function (response) { 
      $scope.emps = emps; 
     }) 
     .catch(function (error) { 
      $scope.status = 'Unable to load emp data:' + error.message; 
     }) 
    }; 
    $scope.dropboxitemselected = function (item) { 
     $scope.selectedItem = item.Id; 
     $scope.name = item.Name; 
     $scope.age = item.Age; 
     $scope.sal = item.Salary; 
     $scope.empid = item.Id; 
     $scope.isDeleteItemVisible = true; 
    }; 
    $scope.DeleteEmp = function() { 
     var empToDelete = { 
      'Id': $scope.empid 
     }; 
     EmpApi.DeleteEmployee(empToDelete) 
       .then(function (response) { 
        alert("user deleted"); 
        $scope.name = undefined; 
        $scope.age = undefined; 
        $scope.sal = undefined; 
        $scope.empid = undefined; 
        $scope.selectedItem = "Select Employee"; 
        $scope.isDeleteItemVisible = false; 
        getEmployees(); 
       }) 
      .catch(function (response) { 
       alert("error in deleting"); 
      }); 
    } 
}); 
+1

不知道这是问题的一部分,但在你的'getEmployees'功能,你要指定'$ scope.emps = emps',但是你没有在'.then'回调函数中传递'emps'作为参数。你正在传递'response'。 – Andrew

回答

0

第一个错误,您正在调用getEmployees()。 定义函数后添加行。我建议您将其添加为控制器定义中的最后一行,以使其更清晰。

第二个错误发生在EmpApi.getEmployees()承诺中,您正在设置$scope.emps = emps;其中emps未定义。 设置$scope.emps = response$scope.emps = response.data取决于你implmenetation

控制器:

MyApp.controller("DeleteController", function ($scope, EmpApi) { 
    $scope.selectedItem = "Select Employee"; 
    $scope.isDeleteItemVisible = false; 

    function getEmployees() { 
     EmpApi.getEmployees().then(function (response) { 
      $scope.emps = response; 
     }) 
     .catch(function (error) { 
      $scope.status = 'Unable to load emp data:' + error.message; 
     }) 
    }; 

    $scope.dropboxitemselected = function (item) { 
     $scope.selectedItem = item.Id; 
     $scope.name = item.Name; 
     $scope.age = item.Age; 
     $scope.sal = item.Salary; 
     $scope.empid = item.Id; 
     $scope.isDeleteItemVisible = true; 
    }; 
    $scope.DeleteEmp = function() { 
     var empToDelete = { 
      'Id': $scope.empid 
     }; 
     EmpApi.DeleteEmployee(empToDelete) 
       .then(function (response) { 
        alert("user deleted"); 
        $scope.name = undefined; 
        $scope.age = undefined; 
        $scope.sal = undefined; 
        $scope.empid = undefined; 
        $scope.selectedItem = "Select Employee"; 
        $scope.isDeleteItemVisible = false; 
        getEmployees(); 
       }) 
      .catch(function (response) { 
       alert("error in deleting"); 
      }); 

     //Init 
     getEmployees(); 
    }