API からリソース データを取得し、それをドロップダウン選択にロードし、ドロップダウンの選択値を設定するという問題がありました。基本的に、ドロップダウンが設定される前にドロップダウンの値を設定しようとしていました。これを行うには2つの異なる方法がありますが、誰かが「より良い」方法、または「より良い練習」の方法を持っているかどうか疑問に思っていました. これが私の2つの方法です。
オプション 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>
どちらがより良い実践であるかについての意見はありますか? または他に良い方法があれば?