angularjs的order不能正常工作
angularjs orderBy not working right
I have an array with this form
$vars[1][1]["name"] = "John";
$vars[1][1]["lastname"] = "Doe";
$vars[1][2]["name"] = "Ely";
$vars[1][2]["lastname"] = "Tim";
$vars[2][1]["name"] = "Brad";
$vars[2][1]["lastname"] = "Vinnie";
$vars[2][2]["name"] = "Angelina";
$vars[2][2]["lastname"] = "Van";
.....
$vars[10][1]["name"] = "Ela";
$vars[10][1]["lastname"] = "Pearl";
$vars[10][2]["name"] = "Gustavo";
$vars[10][2]["lastname"] = "Tim";
which is in PHP. After that I send it to angularJS and i have
$scope.varArr = data.vars
之后是
<div ng-repeat="(key, det) in varArr| orderBy: key">
{{det.name}} {{det.lastname}}
</div>
问题是它没有按顺序取数组1,2,3…10
$vars[1]在$vars[10]和$vars[2]之后。而不是在数字后面排序,而是在字符串后面排序。
这种情况只有当我有$vars[1][1]和$vars[1][2]…等
如果我只有$ var [1] [1], $ var[2][1],…$vars[10][1]将取数字后面的顺序
在Angular文档中,它说当你使用(key, value)
方法时:
处理这个问题的一种方法是在将数组传递给文档之前将其扁平化为单个维度。关于如何在PHP中"扁平化"多维数组,这个问题有几个答案。您需要知道JavaScript规范没有定义为对象返回的键的顺序。(为了在Angular中减轻这个问题1.3 ngRepeat指令用于按字母顺序排序键。)
Version 1.4删除了字母排序。我们现在依赖秩序浏览器在myObj中运行for key时返回的。似乎浏览器通常遵循按顺序提供键的策略其中定义了它们,尽管当键被删除和恢复。看到https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete Cross-browser_issues
如果不需要,建议的解决方法是转换您的对象放入一个数组,该数组按您喜欢的顺序排序然后将其提供给ngRepeat。你可以用这样的过滤器来做或者自己在对象上实现$watch
缺少撇号:
<div ng-repeat="(key, det) in varArr| orderBy: 'key'">
Angular会在你的控制器中寻找函数'key',但这个函数也不存在
相关文章:
- Javascript:selenium Web驱动程序isDisplayed()不工作
- jQuery UI自动完成突然停止工作
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- JavaScript打印功能使日历停止工作
- Javascript.getHours()工作不正常
- 为什么这在IE中的工作方式与在Firefox中不同
- 视频HTML没有'无法在Internet Explorer 11上工作
- 扩展移相器按钮类不工作
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- 正在尝试使用if和else添加类,但无法正常工作
- Jquery FadeIn FadeOut 只工作一次
- Foreach无法在Typescript中工作
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- JS可以在Chrome中工作,但不能在Firefox中工作
- 最大高度转换不;不工作,工作缓慢
- Gulp-rev:不是第一次工作,而是在第一次工作之后工作
- JQuery - Ajax: encodeUriComponent不工作(EncodeUri工作)