1

我正在尝试使用角度在 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];

我意识到这个问题已经被问过很多次了,而且我已经阅读了所有其他问题,但是这些建议似乎都不起作用。如果有人有任何其他建议,请告诉我。

谢谢。

4

1 回答 1

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不再能解决promise。

于 2014-07-30T01:52:18.220 回答