Angularjs在远程加载时选择默认值

时间:2014-07-30 01:23:32

标签: angularjs angularjs-directive angularjs-ng-options

我正在尝试使用angular在SELECT元素中使用默认值,但它似乎不起作用。无论我做什么,当数据在控制器中远程加载时,它总是选择一个空白的默认元素

这是我的HTML:

<select 
ng-options="Domain.Name for Domain in Domains"
ng-model="CurrentDomain"
ng-init="CurrentDomain = Domains[0]"
></select>

以下是相关的控制器代码:

$scope.Domains = $resource('api/domain').query();
$scope.CurrentDomain = $scope.Domains[0];

我意识到这个问题已被多次提出,我已经阅读了所有其他问题,但这些建议似乎都没有用。如果有人有任何其他建议,请告诉我。

感谢。

1 个答案:

答案 0 :(得分:2)

问题是承诺。 $scope.Domains承诺并等待解决。所以,$scope.Domains[0]在那个时间点是未定义的。

所以,正确的代码如下

var Domains = $resource('api/domain').query(function(){
    $scope.Domains = Domains;
    $scope.CurrentDomain = Domains[0];
});

Plunkr版本 - http://plnkr.co/edit/ppjSWDKT4lHWvEcY0PMC?p=preview

请参阅https://github.com/angular/angular.js/issues/4298ng-init无法再解决承诺。