在angularjs中使用orderBy
刚开始使用Angularjs,我有一个简单的应用程序,orderBy不起作用。这里怎么了在angularjs中使用orderBy,angularjs,Angularjs,刚开始使用Angularjs,我有一个简单的应用程序,orderBy不起作用。这里怎么了 <body ng-init="names=['Ruby','Java','Oracle','Basic']"> <input type="text" data-ng-model="name"/> <ul> <li ng-repeat="name in names | orderBy:'name' | filter:name">{{name | uppe
<body ng-init="names=['Ruby','Java','Oracle','Basic']">
<input type="text" data-ng-model="name"/>
<ul>
<li ng-repeat="name in names | orderBy:'name' | filter:name">{{name | uppercase}}</li>
</ul>
<script type="text/javascript" src="js/angular.js"></script>
</body>
- {{name | uppercase}
回答我自己的问题。从name
中删除了单引号,它开始工作。但不确定我是否应该停止使用引号
<li ng-repeat="name in names | orderBy:name | filter:name">{{name | uppercase}}</li>
{{name | uppercase}
orderBy筛选器将按数组中每个成员的属性对对象数组进行排序。因此,如果您说orderBy:'name',那么数组的每个成员都应该有一个名为name的属性。在数组中没有name属性,因为数组包含字符串而不是对象。如果您的阵列看起来像:
names = [ { name: 'Ruby' }, { name: 'Java' }, { name: 'Oracle' }, { name: 'Basic'} ]
那就行了。或者您可以将orderBy:“name”更改为orderBy,如下所示:
<li ng-repeat="name in names | orderBy | filter:name">{{name | uppercase}}</li>
{{name | uppercase}
然后,它将不使用成员的属性来排序,而是使用每个成员的值来排序数组,这就是您想要的字符串排序方式。orderBy仅适用于对象数组--请参阅 我为你做了一份礼物
希望它能对这方面有所帮助有用的JSFIDLE+1。然后如何执行反向orderBy?您可以尝试orderBy:null:true,这与orderBy的结果非常接近。不幸的是,文档没有指定如何处理非对象类型,所以即使我写的东西可以工作,它也没有文档记录。
$scope.names =[{name:'Ruby'}, {name:'test'},{name:'Oracle'},{name:'Basic'}];