Angular 选择内容后 ngOptions 列表空白

Angular ngOptions list blank after selecting something

我的基本设置是 Nodejs、MongoDB 和 Angular。我正在使用 ngOptions 制作一个从数据库中拉出的下拉列表,并在其下方显示 selection 的数据。

页面加载时一切正常。该列表已填充,当我 select 某些东西时,我的 selection 的值就会显示出来。但是在我制作 selection 之后,选项列表不再填充。我对 Node 和 Angular 还是有点陌生​​,可能忽略了一些东西,但我不知道是什么。

这是我正在使用的控制器和工厂:

angular.module('app', ['ngRoute'])
     .factory('Users', ['$http', function($http) {
        return $http.get('/users');
     }])
     .controller('UserController', ['$scope', 'Users', function($scope, Users) {
        Users.success(function(data) {
            $scope.users = data;
        }).error(function(data, error) {
            console.log(error);
            $scope.users = [];
        });
     }])

这是我使用的页面代码:

      <div ng-controller="UserController">
      <span  class="nullable">
        <select ng-model="users" ng-options="user.name for user in users">
            <option value="">--choose user--</option>
        </select>
    </span>
  <br/>
    <ul>
      <li>Name: {{users.name}}</li>
      <li>EID: {{users.emp_id}}</li>
    </ul>
    </div>

ng-model 绑定到 $scope.users,所以当你 select 一个用户时,$scope.users 被设置为那个用户,替换你的用户返回的用户数组服务。由于 user 不是数组,ng-options 不知道要显示什么,所以什么都不显示。

你可能想要

<select ng-model="selectedUser" ng-options="user.name for user in users">
    <option value="">--choose user--</option>
</select>

$scope.selectedUser 将包含您 select 之后的 selected 用户。

顺便说一句,如果你想预先select其中一个用户(例如,第一个用户),你可以这样修改你的控制器:

 controller('UserController', ['$scope', 'Users', function($scope, Users) {
    Users.success(function(data) {
        $scope.users = data;
        if($scope.users.length > 0) {
            $scope.selectedUser = $scope.users[0];
        }
    }).error(function(data, error) {
        console.log(error);
        $scope.users = [];
    });
 }])