我在將select元素的選項列表中的項目設置爲selected時遇到問題。我的服務器後端是Django 1.5,TastyPie作爲API。在ng-options中使用ng-model,在AngularJS中使用Restangular
模板(簡化的)
<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選項?我對Angular/Restangular的理解可能存在差距,因爲這只是我的第二個使用兩者的項目。
您是否嘗試將靜態對象發佈到服務中並以您的方式加載它? –
@MaximShoustin我還沒有。有了Angular的數據綁定,我不確定它會有什麼不同。我可以嘗試一下,然後回報。 –
爲選項使用靜態對象似乎沒有解決任何問題。 –