Я собираю коллекцию под названием CommandGroup, как это
function getCommandGroups() {
$scope.commandGroups = commandGroupResource.query();
return $scope.commandGroups.$promise.then(function (response) {
$scope.commandGroups = response;
});
}
мой html выглядит так.
<select ng-model="vm.Job.CommandGroup" name="ddlCommandGroup" bootstrap-dropdown>
<option value="">Select Something</option>
<option ng-repeat="cmdGroup in commandGroups" value="{{cmdGroup.Id}}">{{cmdGroup.Name}}</option>
</select>
по какой-то причине падение остается пустым. Функция getCommandGroups() вызывает обратную связь и заполняет commandGroups массивом объектов, каждый из которых имеет идентификатор и имя.
Пожалуйста помоги.
ОБНОВИТЬ
я понял, что что-то не так с директивным бутстрапом-выпадающим списком, который требуется, поскольку это Bootstrap-select
angular
.module('app').directive('bootstrapDropdown', ['$timeout',
function ($timeout) {
return {
restrict: 'A',
require: '?ngModel',
link: function (scope, element, attrs, ngModel) {
$timeout(function () {
element.selectpicker();
});
}
};
}
]);
Я считаю, что проблема заключается в том, что сторонний JavaScript (bootstrap-select) не получает информацию об изменении. Вероятно, вам придется вызвать selectpicker ('refresh') в элементе после назначения ответа командамGroups.
Обновление: также необходимо использовать $ scope. $ Apply() перед вызовом selectpicker ('refresh'):
function getCommandGroups() {
$scope.commandGroups = commandGroupResource.query();
return $scope.commandGroups.$promise.then(function (response) {
$scope.commandGroups = response;
$scope.$apply();
$('.mySelect').selectpicker('refresh');
});
}
См. Комментарий ниже для вилки Taylor Buchanan Plunk, чтобы увидеть это в действии.
Обновление 2: используйте таймаут вместо этого, чтобы предотвратить ошибку "дайджест уже выполняется":
function getCommandGroups() {
$scope.commandGroups = commandGroupResource.query();
return $scope.commandGroups.$promise.then(function (response) {
$scope.commandGroups = response;
$timeout(
function(){
$('.mySelect').selectpicker('refresh');
}
);
});
}
Этот список содержит точный код, который вы предоставили, за исключением директивы bootstrap-dropdown
и вашего фактического веб-сервиса. Код функционирует так, как ожидалось. Это указывает на наличие проблемы в другом месте кода, который вы не предоставили.
Возможные проблемы:
Директива bootstrap-dropdown
делает что-то смешное.
а. UPDATE: директива работает "отлично" в этом плунге. Не уверен, что он должен делать, но это не вызывает поведение, которое вы описываете.
В вашей разметке отсутствует ng-controller
.
Что-то еще, что мы не можем видеть, это очистить $ scope.commandGroups.
Переназначение $ scope.commandGroups может мешать циклу дайджеста обещания/объема. Попробуйте изменить функцию следующим образом:
function getCommandGroups() {
commandGroupResource.query().$promise.then(function (response) {
$scope.commandGroups = response;
});
}
response
имеет это значение?