在angular.js 1.0.7 orderBy过滤器中使用谓词字符串'。' 反转数组顺序。
例如:
$filter('orderBy')(['a','b','c'], '.'); // -> ['c', 'b', 'a'].
如何解释转换的逻辑?
更新。我已经在下面找到答案了。
因此,我终于找到了对我的问题的理智的解释,这很简单,为什么会发生这种尴尬的行为,而不是它的意思或应该被写成什么,或者是某种东西。我只是一步一步地调试了开发工具中的源代码调用,结果就是这样的:
事实证明,由于角度“。”中解析机制的特殊性。在这种情况下,最终被认为是NaN,并且在数组的排序函数中,最后一个return v1 < v2 ? -1 : 1;
默认值为false,我们得到“返回1”,它会不断颠倒我们的数组顺序。
您可以自己尝试[1,2,3].sort(function(a, b){return 1;})
,输出将是[3,2,1]
。
答对了。
更新:在最新版本的angular中,此类行为存在正确抛出的错误:
Error: $parse:syntax : Token '.' not a primary expression at column 1 of the expression [.] starting at [].
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句