У меня возникают проблемы с получением элементов в списке опций моего выбранного элемента, которые должны быть установлены как выбранные. Бэкэнд моего сервера — Django 1.5 с TastyPie в качестве API.
Шаблон (упрощенный)
<select
ng-model='dataService.major_minor.department'
ng-options='d.name for d in dataService.departments'
name='department'
class='select2'
required>
</select>
Служба данных
majorMinor.factory('dataService', function($rootScope, Restangular) {
var self = {};
self.degrees = [];
self.departments = [];
self.major_minor = false;
self.majors_and_minors = [];
self.fetch_degrees = function() {
Restangular.all('degree').getList().then(function(results) {
self.degrees = results;
});
};
self.fetch_departments = function() {
Restangular.all('department').getList().then(function(results) {
self.departments = results;
});
};
self.fetch_major_minor = function(majorMinorID) {
Restangular.one('major-minor', majorMinorID).get().then(function(result) {
self.major_minor = result;
});
};
self.fetch_major_minor_list = function() {
Restangular.all('major-minor').getList().then(function(results) {
self.majors_and_minors = results;
});
};
self.fetch_degrees();
self.fetch_departments();
self.fetch_major_minor_list();
return self;
});
Контроллер
majorMinor.controller('EditCtrl',
function($scope, $routeParams, dataService) {
$scope.dataService = dataService;
$scope.dataService.major_minor = false;
$scope.dataService.fetch_major_minor($routeParams.majorMinorID);
}
);
Проблема, с которой я столкнулся, заключается в том, что major_minor.department является внешним ключом. TastyPie возвращает полный объект, так что это не просто URI отдела. Массив dataService.departments — это массив всех отделов, доступных этому пользователю. Если бы вы сравнили major_minor.department с dataService.departments[indexOfDepartment], они были бы равны.
Любые мысли, почему ng-модель неправильно выбирает ng-опцию? Возможно, в моем понимании Angular/Restangular есть пробел, так как это только мой второй проект, использующий оба.