私は経験豊富なC#/ ASP.NET開発者であり、将来のすべてのWebフロントエンド開発のためにAngularJSを推進しています。AngularJSのある配列から別の配列への項目の移動
私は明らかにできない特定の状況があります。私は、 "電子メール"オブジェクトの配列(プロパティ "ID"と "名前")の配列にバインドされたSELECTを持って、データバインディングを行うためにng-repeatの代わりにng-optionsを使用しています。これは私のためにSELECTを設定するので、リストからアイテムを選択し、ボタンをクリックしてリストからアイテムを削除し、それをセカンダリリストに追加するだけです。私はもともとチェックボックスを使用しようとしていましたが、配列には多数の項目があり、プロジェクトマネージャーはそれを気に入らなかったのです。
私はすべての利用可能な配列関数への参照としてこれを使用しています: http://www.w3schools.com/jsref/jsref_obj_array.asp
私がそのようにC#のに慣れているので、私はJavaScriptで利用できる同じメソッドを持っていないと私がいますこれを行うための正しい技法を見つけようとするのは難しいです。 "名前"でアルファベット順にソートしたまま、ソース配列内の項目を識別して削除し、ターゲット配列に挿入する最良の方法は何ですか?
これは2番目の質問をします。アイテムを選択してボタンをクリックすると、ng-model属性がSELECTの配列をスキャンするために使用されるアイテムの "id"に関連付けられているため、SELECTを効率的にバインドするかどうかわかりませんにバインドされ、アイテムを取得します。私はAngularJSをかなり新しくしており、そのドキュメンテーションはあまり理想的ではないので、オブジェクトを "id"ではなくバインドして、配列をスキャンせずに直接選択項目にアクセスできるかどうか疑問に思っていました。ここでは、 "ID" に結合する私の現在のコードがあります:
JS:
$scope.addEmailToGroup = function(emailID) {
var email = getEmailByID($scope.emails, emailID);
if (email !== null) {
// TODO: Move item from one array to the other
}
};
function getEmailByID(arr, id) {
var email = null;
var length = arr.length;
for (var i = 0; i < length; i++) {
if (arr[i].id === id) {
email = angular.copy(arr[i]);
break;
}
}
return email;
}
HTML:
<select id="emails" class="form-control" data-ng-model="selectedEmailID" name="emails" data-ng-options="email.id as email.name for email in emails"></select>
<button class="btn btn-default" data-ng-click="addEmailToGroup(selectedEmailID)" type="button">
<span class="glyphicon glyphicon-plus"></span>
</button>
あなたのスニペットは機能していません。 – developer033
@developer033それは明らかにアプリケーションの一部ですが、ええ、スニペットとして書くべきではありません。 – Shomz
ng-modelでオブジェクト全体を簡単にバインドします。オブジェクトを探す必要はありません。既にindexOf()とsplice()を使用して現在の配列から削除し、別の配列にプッシュすることができます – charlietfl