select 要素のオプション リストの項目を選択済みとして設定する際に問題が発生しています。サーバーのバックエンドは 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-model が ng-option を正しく選択していない理由はありますか? これは両方を使用する私の2番目のプロジェクトにすぎないため、Angular/Restangularの理解にギャップがある可能性があります。