У меня есть раскрывающийся список, который должен вызывать выборку данных при изменении. Мне не нужна двусторонняя привязка к модели для раскрывающегося списка. Я просто хочу, чтобы он изначально был заполнен списком отделов, и когда пользователь выбирает один, он получает список пользователей в этом отделе.
Выбор выглядит так:
<select class="form-control" id="selDepartmentList" ng-model="departmentList" ng-change="getUsersInDepartment(document.getElementById("selDepartmentList").options[document.getElementById("selDepartmentList").selectedIndex].value)">
<option value="-1">All</option>
<option ng-repeat="dept in departmentList"
value="{{dept.DepartmentId}}">
{{dept.DepartmentName}}
</option>
</select>
Я пробовал ng-change без ng-model, но это не помогло, так как ng-change по какой-то причине требует ng-model. Я попытался установить ng-model на нулевую и пустую строку, но ничего не получилось. Я также пытался вообще не использовать ng-change и использовать onchange, но getUsersInDepartment не может быть найден через onchange, так как он подключен к моему контроллеру. Если для ng-model задано значение DepartmentList, в раскрывающемся списке не будет значения, любой выбор будет стерт.
Все, что я хочу, это то, что когда пользователь выбирает отдел, он передает идентификатор этого отдела в getUsersInDepartment, который затем извлекает список пользователей. Но прямо сейчас getUsersInDepartment никогда не вызывается.
DepartmentList определен в моем контроллере и привязан к $scope. Во всех примерах, которые я видел, есть какой-то тип selectedModelObject, который они привязывают к раскрывающемуся списку. У меня нет ни одного из них.
Мой контроллер выглядит так:
controller('AdminTableCtrl', function ( $scope, coreAPIservice ) {
$scope.userList = [];
$scope.departmentList = [];
coreAPIservice.GetUserList().success(function (response) {
$scope.userList = response;
});
coreAPIservice.GetDepartmentList().success(function (response) {
$scope.departmentList = response;
});
$scope.getUsersInDepartment = function(deptId) {
if(deptId === -1) {
coreAPIservice.GetUserList().success(function (response) {
$scope.userList = response;
});
}
else {
coreAPIservice.GetUsersInDepartmentList(deptId).success(function (response) {
$scope.userList = response;
});
}
}
});
Редактировать:
Моя первоначальная попытка с ng-options:
<select class="form-control" id="selDepartment"
ng-model="selectedDepartment"
ng-options="dept as dept.DepartmentName for dept in departmentList track by dept.DepartmentId">
<option value="">Select Team...</option>
</select>
selectedDepartment определяется как:
$scope.selectedDepartment = {};
ng-click
, но думаете, что использование только angular — это бесполезно? Все это можно сделать в одном выражении, используяng-options
. - person Claies   schedule 14.12.2015document.getElementById
определенно не угловатый. Я рад, что вы нашли способ решить эту проблему без использования angular, но я думаю, чтоng-options
сработало бы нормально; Однако трудно сказать наверняка, почему это не сработало для вас, не видя кода, который вы пробовали. - person Claies   schedule 14.12.2015