2017-07-05 14 views
0

Here is my runable Plunkerコントローラの代わりにテンプレートで名前を並べ替える

名前で項目を並べ替える必要があります。これはバグです。一番上の "生徒名を選択してください"は、空欄として表示されます。

私が欲しいもの
<select ng-options="student as student.name for student in students | orderBy: sortNameExcludeTopOne" 
     ng-model = "student">   
</select> 




$scope.sortNameExcludeTopOne = function(student) { 
     if (student.id === 0) { 
      return -1; 
     } 
     return student.name; 
     } 

  • 今、私たちは、テンプレートにその名前で項目をソート行うことができ、コントローラでカスタム関数を使用して、その名前で項目を並べ替えますか?コントローラーの代わりに?私は選択のために欲しいUI

  • は次のとおりです。 「生徒の名前を選択してください」 - >「バー」 - >「foo」という

アップデート:私は「生徒の名前を選択してください」したいです

<select ng-options="student as student.name for student in students | orderBy: 'name'" ng-model="student">   
</select> 

その「名前」プロパティで学生を並べ替える必要があります。選択

+0

選択の最上部にある「学生名を選択してください」だけが必要なのでしょうか?それとも残りのリストが名前でソートされる必要がありますか? –

+0

私は「選択する学生の名前」を選択してください。残りの生徒は名前でソートされます – EntryLeveDeveloper

答えて

0

あなたはビューで直接、その後置くことができ、配列にアイテムをプッシュする必要はありません。

<select ng-options="student as student.name for student in students | orderBy: 'name'" ng-model = "student"> 
    <option value="">Please select a student name</option> 
</select> 
+0

あなたのソリューションは私のために働く。なぜが "学生名を選択してください"の代わりに空欄を表示しています – EntryLeveDeveloper

0

の上部には、名前でソートされたそれらに利用可能なオプションをしたいです。

編集: あなたは、その後、上部の余分なオプションを追加する「学生の最初のソートにあなたのコントローラを使用する場合:

students() { 
    const studentList = someStudents(); 
    studentList.sort((a, b) => { 
    if(a.name < b.name) return -1; 
    if(a.name > b.name) return 1; 
    return 0; 
    }); 
    studentList.unshift({ new: option, goes: here }); 
} 

次に、あなたがそれを並べ替え、および1以上を挿入することができますオプションを最初に表示し、必要なオプションを表示します。

ちなみに、オプションは 'value'に基づいていると仮定しても、orderBy: 'name'を使用することができます。あなたはそうのような数値を持つもう一つのデフォルトエントリを持つ必要があるだろう:

<select ng-options="student as student.name for student in students | orderBy: 'name'" 
    ng-model="student"> 
    <option value="-1">Please select a student name:</option> 
</select> 
+0

選択の最上部にある「学生名を選択してください」とします。私はorderByを使用することはできません: "名前"これはまた "学生名を選択してください"と並べ替えますので – EntryLeveDeveloper

+0

あなたのための2つのオプションで答えを更新しましたが、orderBy – rrd

+0

は、「生徒名を選択してください:」の代わりに空欄になります。なぜなのかご存知ですか?私はvalue = ""を使用し、次に動作します。 – EntryLeveDeveloper

関連する問題