Javascript/AngularJS-将字符串转换为orderBy中的数字
我有一个简单的问题。当我尝试订购ID时,它的订购方式如下 1,12,13,2,20 所以我认为它假设这是一个字符串 我试着用那个号码,但并没有任何帮助 我能做什么 泰德Javascript/AngularJS-将字符串转换为orderBy中的数字,javascript,html,angularjs,Javascript,Html,Angularjs,我有一个简单的问题。当我尝试订购ID时,它的订购方式如下 1,12,13,2,20 所以我认为它假设这是一个字符串 我试着用那个号码,但并没有任何帮助 我能做什么 泰德 只需将字符串值转换为int,并让angularjs的orderBy过滤器为您完成这项工作 $scope.getNumber = function(row){ return parseInt(row.TICKET_ID); }; <tr class="text-center" ng-repeat="ticket i
只需将字符串值转换为int,并让angularjs的orderBy过滤器为您完成这项工作
$scope.getNumber = function(row){
return parseInt(row.TICKET_ID);
};
<tr class="text-center" ng-repeat="ticket in tickets | orderBy:getNumber:true">
$scope.getNumber=函数(行){
返回parseInt(行票证ID);
};
此外,orderBy为asc/desc排序接受第二个参数(真/假)您不应该在angularJs应用程序中使用orderBy,也不应该使用过滤器。在angular中,移除的两个管道,因为(): Angular不提供用于筛选或排序列表的管道。熟悉AngularJS的开发人员将其称为filter和orderBy。在角度上没有等价物 这不是疏忽。Angular不提供此类管道,因为它们性能差,并且防止了过度缩小。filter和orderBy都需要引用对象属性的参数。在本页前面,您了解到,此类管道必须是不纯净的,Angular在几乎每个变更检测周期中都调用不纯净管道 过滤,尤其是排序是昂贵的操作。当Angular每秒多次调用这些管道方法时,即使是中等大小的列表,用户体验也会严重降低。在AngularJS应用程序中,filter和orderBy经常被滥用,导致人们抱怨AngularJS本身速度慢从间接意义上讲,这种收费是公平的,因为AngularJS首先提供了过滤器和orderBy,从而准备了这种性能陷阱。
相反,在控制器中实现一个简单的顺序和过滤逻辑,并将经过排序和过滤的数据传递给ng repeat;现在,您可以准确定义何时以及如何排序、筛选。。。应该这样做 在控制器中,转换与
Number(anyString);
…错误是什么?请编辑您的问题。我们不知道您在问什么您需要将JSON中的值从字符串更改为数字,或者您使用将这些值转换为数字的自定义筛选器我怀疑angular尝试应用的默认实现,默认情况下会将值转换为字符串,您可以通过在sortBy函数中手动编写类似于
a.prop1-b.prop1
的内容进行排序。是的,JSON将数字作为字符串,但我无法在服务器端对其进行更改。我能做什么?在控制器中更改vm.tickets
,或者编写一个自定义过滤器,作为orderBy
haha@user10031499。我不认为编写排序函数需要很多工作——作为一名开发人员的一个好处是,您可以决定要提供什么样的质量……您可以使用加号+作为快捷方式(+anyString
)。
// table ordering
vm.propertyName = 'TICKET_ID';
vm.reverse = false;
vm.sortBy = function(propertyName) {
vm.reverse = !vm.reverse;
vm.propertyName = propertyName;
};
$scope.getNumber = function(row){
return parseInt(row.TICKET_ID);
};
<tr class="text-center" ng-repeat="ticket in tickets | orderBy:getNumber:true">
Number(anyString);