我遇到了从 API 获取资源数据、将其加载到下拉选择中并设置下拉选择值的问题。基本上它试图在填充下拉列表之前设置它的值。我有两种不同的方法可以做到这一点,但想知道是否有人有“更好”的方法,或者“更好的实践”方法。这是我的两种方法。
选项 1:附加到 ng-repeat 元素的指令
控制器
$scope.users = User.query();
$scope.dude={
name: "Dude",
id: 3
}
HTML
<select id="userSelect" ng-show="users.length">
<option ng-repeat="user in users" choose dude="dude">{{user.username}}</option>
</select>
指示
.directive('choose', function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
if (scope.user) {
if (scope.user.id === scope.dude.id) {
$("#userSelect").val(element.val());
}
}
}
}
});
选项 2:观察用户长度的变化(返回调用,并填充下拉列表)
控制器
$scope.users = User.query();
$scope.dude={
name: "Dude",
id: 3
}
$scope.$watch('users.length', function() {
$("#userSelect").val($scope.dude.id);
});
HTML
<select id="userSelect" ng-show="users.length">
<option ng-repeat="user in users" value="{{user.id}}>{{user.username}}</option>
</select>
关于哪个更好的做法有什么意见吗?或者是否有其他更好的方法?