AngularJS ngRepeat orderBy在Chrome中

时间:2014-01-24 21:52:42

标签: angularjs google-chrome angularjs-ng-repeat

我有一个简单的应用程序,显示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行)显示在列表的开头。这是为什么?

1 个答案:

答案 0 :(得分:2)

如果您只有一个属性,那么您只能将字符串传递给过滤器而不是数组:

<tr ng-repeat="row in rows | orderBy:orderBy">