Я пытаюсь получить все параметры из раскрывающегося списка. Я получаю все параметры, когда они создаются вручную, но я не могу получить их при построении с использованием ng-repeat.
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.names = ["Emil", "Tobias", "Linus"];
var x = document.getElementById("mySelect").options.length;
document.getElementById("demo").innerHTML = "Found " + x + " options in the list.";
});
<script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<div ng-app = "myApp" ng-controller = "myCtrl">
<p id = "demo"></p>
<select id = "mySelect" >
<option ng-repeat = "x in names">{{x}}</option>
</select>
</div>
Как вы видите, при запуске найденные элементы фрагмента возвращаются как «0».
Но приведенный ниже фрагмент работает, если вы создаете параметры вручную.
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.names = ["Emil", "Tobias", "Linus"];
var x = document.getElementById("mySelect").options.length;
document.getElementById("demo").innerHTML = "Found " + x + " options in the list.";
});
<script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<div ng-app = "myApp" ng-controller = "myCtrl">
<p id = "demo"></p>
<select id = "mySelect" >
<option >Emil</option>
<option >Tobias</option>
<option >Linus</option>
</select>
</div>
Хотел бы знать, как получить все параметры, когда ng-repeat используется с select. Спасибо!
Это происходит потому, что ваша функция выполняется до рендеринга DOM
. Просто оберните свой код внутри $timeout
, и он будет работать должным образом, поскольку $timeout
выполнит ваш код только после рендеринга DOM
.
Рабочий пример:
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $timeout) {
$scope.names = ["Emil", "Tobias", "Linus"];
$timeout(function () {
var x = document.getElementById("mySelect").options.length;
document.getElementById("demo").innerHTML = "Found " + x + " options in the list.";
});
});
<script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<div ng-app = "myApp" ng-controller = "myCtrl">
<p id = "demo"></p>
<select id = "mySelect" >
<option ng-repeat = "x in names">{{x}}</option>
</select>
</div>
@Mona рада помочь вам :-)
Вы также можете сделать это: var x = $('#mySelect').options.length; $('#mySelect').html("Found " + x + " options in the list.");
Гоша! Почему я не подумал об этом. Большое спасибо!