2015-09-14 1 views
0

У меня есть JSON, как:угловые и нг-варианты и JSON

{ 
    "0":{"login":"user1","licenses":{"x":4},"open":true}, 
    "1":{"login":"user2","licenses":{"x":6,"xx":9,"xxx":7},"open":true} 
} 

И это

<select ng-model="userToAdd" ng-options="user.login as user.login for user in listUsers"></select> 

не работает, но я не знаю, почему.

Вот соответствующий код контроллера:

$scope.getUsers = function() { 
    $scope.listUsers = {}; 
    var indexLogin = 0; 
    var indexLicense = 0; 
    $http.get('listUser').success(function(data) { 
     _.each(data, function(licenses, userLogin){ 
      $scope.listUsers[indexLogin] = {}; 
      $scope.listUsers[indexLogin].login = userLogin; 
      $scope.listUsers[indexLogin].licenses = {}; 
      _.each(licenses, function(license){ 
       if(license.feature.name in $scope.listUsers[indexLogin].licenses){ 
        $scope.listUsers[indexLogin].licenses[license.feature.name] = $scope.listUsers[indexLogin].licenses[license.feature.name] + 1; 
       } else { 
        $scope.listUsers[indexLogin].licenses[license.feature.name] = 1; 
       } 
       indexLicense++; 
      }) 
       $scope.listUsers[indexLogin].open = false; 
      indexLogin++; 
     }) 
    }); 
}; 
+0

Пожалуйста, покажите код нг-контроллера. – TchiYuan

ответ

2

Ваш listUsers является объектом, а не массив. Таким образом, нг-параметры должны быть изменены соответствующим образом:

ng-options="user.login as user.login for (_, user) in listUsers" 

В качестве альтернативы, вы можете захотеть изменить формат listUsers поэтому становится собственно массив. Вместо того чтобы использовать увеличивающиеся indexLogin, просто создать новый объект на каждом шаге, а затем нажмите этот объект в массив listUsers использования _.map подготовить надлежащий массив объектов:

$scope.listUsers = []; 
$http.get('listUser').success(function(data) { 
    $scope.listUsers = _.map(data, function(licenses, userLogin){ 
     var user = { 
      login: userLogin, 
      open: false, 
      licences: {} 
     }; 
     _.each(licenses, function(license){ 
      var featureName = license.feature.name; 
      user.licences[featureName] = (user.licences[featureName] || 0) + 1; 
     }); 
     return user; 
    }) 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^