Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.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
Javascript AngularJS仅对ng repeat表中的前两项进行排序_Javascript_Angularjs - Fatal编程技术网

Javascript AngularJS仅对ng repeat表中的前两项进行排序

Javascript AngularJS仅对ng repeat表中的前两项进行排序,javascript,angularjs,Javascript,Angularjs,所以我试图用Angular创建一个简单的可排序表。在读了ng的书和各种文章之后,我已经接近了,但我一直有同样的问题 我有一个7列100行的表。每当我单击要排序的列的标题时,它只对前两个条目进行排序,而不是对所有100个条目进行排序。此外,我只能对它进行一次排序(即,除非我出于某种原因刷新页面,否则它不会返回到其原始顺序) 不太清楚我做错了什么。非常感谢您的帮助 我的代码是这样的: 查看HTML: <div ng-controller="currentTradeshowsController

所以我试图用Angular创建一个简单的可排序表。在读了ng的书和各种文章之后,我已经接近了,但我一直有同样的问题

我有一个7列100行的表。每当我单击要排序的列的标题时,它只对前两个条目进行排序,而不是对所有100个条目进行排序。此外,我只能对它进行一次排序(即,除非我出于某种原因刷新页面,否则它不会返回到其原始顺序)

不太清楚我做错了什么。非常感谢您的帮助

我的代码是这样的:

查看HTML:

<div ng-controller="currentTradeshowsController">


    <table class="table table-hover tabled-bordered">
        <tr>
            <th>
                <a ng-click="changeSorting('eventName')">Tradeshow</a>
            </th>
            <th>
                <a>Division Lead</a>
            </th>
            <th>
                <a>Division(s) Participating</a>
            </th>
            <th>
                <a>Location</a>
            </th>
            <th>
                <a>Details</a>
            </th>
            <th>
                <a>Start</a>
            </th>
            <th>
                <a>End</a>
            </th>
        </tr>
        <tr ng-repeat="items in events | orderBy:sort.column:sort.descending"> 
            <td><a href="#/tradeshowdetails/{{$index}}">{{items.Event.eventName}}</a></td> 
            <td>{{items.Event.tradeshow.divisionLead.firstName}} {{items.Event.tradeshow.divisionLead.lastName}}</td>
            <td>{{items.Event.divisionParticipating}}</td>
            <td>{{items.Event.location.address2}}</td>
            <td>{{items.Event.tradeshow.highleveShowDetails}}</td>
            <td>{{items.Event.startDate}}</td>
            <td>{{items.Event.endDate}}</td>
        </tr>
    </table>


</div>
这不应该是:

<tr ng-repeat="event in events | orderBy:sort.column:sort.descending"> 
  <td><a href="#/tradeshowdetails/{{$index}}">{{event.eventName}}</a></td> 
  <td>{{event.tradeshow.divisionLead.firstName}} {{event.tradeshow.divisionLead.lastName}}</td>
  <td>{{event.divisionParticipating}}</td>
  <td>{{event.location.address2}}</td>
  <td>{{event.tradeshow.highleveShowDetails}}</td>
  <td>{{event.startDate}}</td>
  <td>{{event.endDate}}</td>
</tr>

{{event.tradeshow.divisionLead.firstName}{{event.tradeshow.divisionLead.lastName}
{{event.division}
{{event.location.address2}
{{event.tradeshow.highleveShowDetails}
{{event.startDate}
{{event.endDate}

您的
ng单击可以简化为

<td ng-click="sort.descending=!sort.descending;sort.column='items.Event.eventName'">Event Name</td>
事件名称
这样,除了控制器中的JSON数组之外,您不需要任何东西,也不需要函数来更改排序列。这是一把简化的小提琴:

编辑:摆弄较长的数组。所有行都将被排序:


编辑:摆弄你的数据。我只对第一列进行了排序:

eventName
不是
项的属性。ng repeat中的
是否应该命名为
事件
并在第一列中显示
{event.eventName}
。这次我用
标签
做了这件事,然后排序按钮看起来像:
Tradeshow
我遇到了同样的问题,这让我想知道是否不是排序,而是数组呈现的顺序?我又试了一次。仍然有同样的问题,但我开始找出问题所在。对于
Tradeshow
来说,我将谓词设置为什么并不重要。我可以将谓词设置为'blahblahblah',它仍然只对前两行进行排序。如果我想按EvestNoad属性排序,我应该设置什么谓词?在这里你做了什么不同的操作,它看起来与我的标记相同吗?我在你的小提琴中尝试了什么,但是我仍然有同样的两行。我的小提琴在某种意义上是骗人的,分类名称按字母顺序把“Bob”放在中间,排序ID总是把“2”放在中间。你能分享你正在使用的实际JSON吗,或者用你的代码扩展我的小提琴?我的可以工作,但我不能在你的东西上测试它。这里有一个指向我用作随机数据的JSON端点的链接。是的,就是这样。需要将谓词设置为Event.eventName谢谢!太好了:)你介意把答案标为正确吗?这样其他人也会受益
<td ng-click="sort.descending=!sort.descending;sort.column='items.Event.eventName'">Event Name</td>