У меня возникла проблема с получением данных о ресурсах из 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>
Любые мнения о том, какой из них лучше практиковать? Или если есть другой лучший способ?