2016-10-21 4 views
0

Я создаю веб-приложение, в котором я забирающий данные из базы данных,Дополнительное пустое пространство в том числе в динамических выпадающих в angularjs

<select ng-model="ucomname" ng-init="ucomname='{{o.comname}}'" ng-change="uucomname(o)"> 
<option ng-repeat="o in comnamelistfun" value="{{o.comname}}">{{o.comname}}</option> 
</select> 

это мой DropDownList, но это добавляет пустую строку на top, но когда я получаю статические данные, он работает нормально, но когда я использую динамические данные, он начинает добавлять лишнее пустое место в выпадающем списке,

ПРИМЕЧАНИЕ: данные являются чистыми динамическими, и он работает нормально со статическими данными

Я также пробовал ng-option, но все еще получаю дополнительное пустое пространство

+0

Вы можете просто добавить пустой дополнительный тег. –

+1

Просмотрите этот вопрос http://stackoverflow.com/questions/12654631/why-does-angularjs-include-an-empty-option-in-select –

ответ

1

Это происходит, когда ng-model выбора не определено или значение, на которое ссылается ng-model, не существует в наборе параметров. Угловая добавляет его по умолчанию в этом случае. Просто дайте некоторую ценность в соответствии с вашей логикой, и она не будет показывать пустой параметр.

А вот в ng-init="ucomname='{{o.comname}}'" я не думаю, что o имеет никакого значения, так как вы создаете ее в ng-repeat внутри select на option теге не на самом select тега (это правильно нг-повторить вариант, но вы не можете получить эту переменную на выберите)

EDIT:

я добавил пример. Я не знаю ваших точных переменных, поэтому использовал один из моих вариантов и, следовательно, немного изменил объявление ng-option и удалил функцию change, так как у меня ее нет. Но основная строка ниже вы должны заметить, что $scope.ucomname = $scope.comnamelistfun[0].comname;, где мы назначаем значение по умолчанию для ng-model выбора.

var app = angular.module('myApp', []); 
 
app.controller('myCtrl', function($scope) { 
 
    $scope.comnamelistfun = [ 
 
     {comname: 'a'}, 
 
     {comname: 'b'}, 
 
     {comname: 'c'} 
 
    ]; 
 
    $scope.ucomname = $scope.comnamelistfun[0].comname; 
 
});
<!DOCTYPE html> 
 
<html> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script> 
 
<body> 
 

 
<div ng-app="myApp" ng-controller="myCtrl"> 
 

 

 
<select ng-model="ucomname" ng-options="o.comname as o.comname for o in comnamelistfun"> 
 
</select> 
 

 

 

 
</body> 
 
</html>

+0

Что мне нужно делать? –

1

Попробуйте это в вашем контроллере

var app = angular.module('App', []); 
app.controller('Ctrl', function($scope) { 
$scope.comnamelistfun = [ 
    {comname: 'One'}, 
    {comname: 'Two'}, 
    {comname: 'Three'} 
]; 
$scope.ucomname=$scope.comnamelistfun[0].comname; 
}); 

Посмотреть

<div ng-controller="Ctrl"> 
<select ng-model="ucomname" ng-options="o.comname as o.comname for o in comnamelistfun">