我想按名称对项目进行排序。这是最常见的错误,#34;请选择学生姓名",它显示为空字段。
<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是: &#34;请选择学生姓名&#34; - &GT; &#34;酒吧&#34; - &GT; &#34;富&#34;
更新:我想要&#34;请选择学生姓名&#34;在选择
的顶部答案 0 :(得分:0)
您希望它们可用的选项按名称排序:
[C++14: 17.6.4.3.2]:
这应该按照他们的“姓名”属性对学生进行排序。
编辑: 如果您想在顶部添加额外选项,请使用您的控制器首先对“学生”进行排序:
<select ng-options="student as student.name for student in students | orderBy: 'name'" ng-model="student">
</select>
然后您可以在那里对其进行排序,并在开头添加一个您想要显示的选项。
顺便说一下,你可以使用orderBy:'name',假设你的选项基于'value';你必须再有一个带有数值的默认条目,如下所示:
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 :(得分: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>