【问题标题】:orderBy in ng-repeatng-repeat 中的 orderBy
【发布时间】:2015-03-12 12:08:47
【问题描述】:

JS:

$scope.termexamlist = {
    0:{
        0id:"1",
        1name:"Doe, John",
        2term1:"89"
    },
    1:{
        0id:"2",
        1name:"Aayt, Ray",
        2term1:"90"
    }
}; 

HTML:

<tr ng-repeat="t in termexamlist">
    <td ng-repeat="(key,value) in t">{{value}}</td>                 
</tr>

我得到了这个ng-repeat 代码,它生成学生的学期考试成绩列表,我想按1name 对其进行排序,但它没有用,我用来放置&lt;tr ng-repeat="t in termexamlist | orderBy:'1name' "&gt;,但它没有用。我也尝试了不同的编码,但也没有用。对不起,我只是 angularjs 编程的初学者。感谢您的帮助:D

【问题讨论】:

  • 你对数组的定义是错误的:$scope.array = [{....}, {...}] 是数组,$scope.obj = {0: {...}, 1: {...}} 是对象。你已经混合了这两个定义:)
  • 对不起,这不是一个数组,而是一个对象。

标签: javascript angularjs object ng-repeat


【解决方案1】:

声明数组时不应该放置标识符

$scope.termexamlist = [
  {
    0id:"1",
    1name:"Doe, John",
    2term1:"89"
  },
  {
    0id:"2",
    1name:"Aayt, Ray",
    2term1:"90"
   }
]; 

这就足够了,您可以遍历它并对其进行排序。

另外,你给变量加前缀的方式很奇怪,但这不关我的事

【讨论】:

  • 我需要在我的变量中添加一个前缀,因为 chrome 在json_encode 中对返回的数据进行排序
【解决方案2】:
$scope.termexamlist = [
      {
        0id:"1",
        1name:"Doe, John",
        2term1:"89"
      },
      {
        0id:"2",
        1name:"Aayt, Ray",
        2term1:"90"
      }
    ]; 

删除数据中的 0 和 1,它会正常工作

【讨论】:

  • 对不起,我不能删除 0 和 1 因为 $scope.termexamlist 只是我的 msg.data 的容器,其中数据已经是一个对象
【解决方案3】:

我现在明白了,我在对象的键上添加下划线,所以它看起来像这样$scope.termexamlist={0:{_0id:"1",_1name:"Doe, John",_2term1:"89"}}。我保留数字因为 chrome 对返回的数据进行了排序 json_encode

【讨论】:

    猜你喜欢
    • 2015-02-11
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 2016-01-26
    相关资源
    最近更新 更多