我有一个简单的应用程序,显示Angular中的数据行。当控制器最初加载数据时,我希望行的显示顺序与它们添加到rows
数组的顺序相同。因此,orderBy
属性最初将设置为空字符串。然后,单击列标题应将orderBy
属性设置为适当的值。
这是我的小提琴:http://jsfiddle.net/fLjMR/3/。
这是我的JS:
function ctrl($scope)
{
var rows = [];
for(var i = 10;i < 30;i++)
{
rows.push({name: "Fake Name " + i, email: "fakeemail" + i + "@gmail.com"});
}
$scope.rows = rows;
$scope.orderBy = "";
};
这是我的HTML:
<table ng-app ng-controller="ctrl">
<thead>
<th><a ng-click="orderBy='name'">Name</a></th>
<th><a ng-click="orderBy='email'">Email</a></th>
</thead>
<tbody>
<tr ng-repeat="row in rows | orderBy:[orderBy]">
<td>{{row.name}}</td>
<td>{{row.email}}</td>
</tr>
</tbody>
</table>
当我在IE和FF中执行此操作时,行按照添加顺序显示,但是当我在Chrome中执行此操作时,中间项(在本例中为第20行)显示在列表的开头。这是为什么?
答案 0 :(得分:2)
如果您只有一个属性,那么您只能将字符串传递给过滤器而不是数组:
<tr ng-repeat="row in rows | orderBy:orderBy">