Chrome中的AngularJS ngRepeat orderBy

Chrome中的AngularJS ngRepeat orderBy,angularjs,google-chrome,angularjs-ng-repeat,Angularjs,Google Chrome,Angularjs Ng Repeat,我有一个简单的应用程序,以角度显示数据行。当控制器最初加载数据时,我希望行以与添加到我的行数组中相同的顺序显示。因此,orderBy属性最初将设置为空字符串。然后,单击列标题应将orderBy属性设置为适当的值 这是我的小提琴: 以下是我的JS: function ctrl($scope) { var rows = []; for(var i = 10;i < 30;i++) { rows.push({name: "Fake Name " + i,

我有一个简单的应用程序,以角度显示数据行。当控制器最初加载数据时,我希望行以与添加到我的
数组中相同的顺序显示。因此,
orderBy
属性最初将设置为空字符串。然后,单击列标题应将
orderBy
属性设置为适当的值

这是我的小提琴:

以下是我的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 = "";
};
函数ctrl($scope)
{
var行=[];
对于(变量i=10;i<30;i++)
{
推送({name:“Fake name”+i,email:“fakeemail”+i+“@gmail.com”});
}
$scope.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>

名称
电子邮件
{{row.name}
{{row.email}

当我在IE和FF中执行此操作时,行最初按添加顺序显示,但当我在Chrome中执行此操作时,中间项(在本例中为第20行)显示在列表的开头。这是为什么?

如果您只有一个要订购的属性,那么您可以只将字符串传递给筛选器,而不是数组:

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


嗯。你知道吗,这就解决了。我知道可以去掉括号,但我计划稍后添加一些附加参数。为什么括号会有不同?只是看了一眼角度源。如果排序谓词(冒号后面的东西)是假值并返回未排序的数组,orderByFilter将短路。空字符串是错误的值。包含空字符串的数组不是伪值,因此尝试使用该空字符串作为谓词进行排序。很棒的东西。我想你成功了!谢谢!