Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在angularjs中使用orderBy_Angularjs - Fatal编程技术网

在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

刚开始使用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 | 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'}];