1

ユーザーに表形式のデータをアップロードしてもらい、最後まで挿入される前に解析できるようにします。

たとえば、1 人のユーザーが次のファイルをアップロードできます。

ID, NAME, PASSWORD, ADDRESS, EMAIL
10, Tim, foo, 123 S Main, tim@mailinator.com
11, Withers, foo, 123 S Main, tim@mailinator.com
//ETC//

また、別のユーザーがデータを異なる形式でフォーマットする場合があります。

FIRST_NAME, LAST_NAME, ID, PASSWORD, EMAIL
Tim, Withers, 10, 123, tim@mailinator.com
//You get the idea...

私のアプリはデータを取得し、サーバーに最終的にアップロードする前に、ユーザーが必要な情報を持つ列を指定できるようにします。

Column 0 => ID
Column 4 => Email
Column 2 => Password

selectユーザー入力を制限するために a を使用したいと思います。

Which column is the First Name? 
<select 
    ng-options="k as k for (k,v) in uploadData.row[0]" 
    ng-model="columnData.firstName">
</select>

これはうまく機能しますが、9 つ以上の列がある場合、選択ボックスは次のようになります。

0
1
10
11
12
13
2
3
4
5
6
7
8
9

1-13 連続して表示されるようにするにはどうすればよいですか? 特定の長さのオプションを使用して選択を作成する別の方法はありますか?

編集:問題をいじる: http://jsfiddle.net/aBccw/204/

4

4 に答える 4

2

それらを並べ替えるにはフィルターが必要です。あなたのフィドルを更新しました。

現在は次のng-optionsとおりです。

<select ng-model="selected" ng-options="id for id in friends|sortKeyIds"></select> 

そして、フィルターを追加しました(フィルターを追加するには、コントローラーをモジュールに入れる必要がありました)。このキーの抽出とフィルタリングを行うためのより良い方法があると確信しています (フィドルで立ち往生していなければ、underscore.js を使用していたでしょう)。

app.filter('sortKeyIds', function() {
    return function(input) {
        var keys = angular.forEach(input, function(value, key) {
            return parseInt(key);
        });
        keys.sort(function(a, b) {
            return a - b;
        });
        return keys;
    }
});
于 2013-10-11T11:58:56.730 に答える