Javascript 带有自定义函数的AngularJS OrderBy
我对AngularJS是个新手,但到目前为止,我已经能够对一切都了如指掌。但是OrderBy给我带来了麻烦。我还没有发现像我这样的问题。我有一种感觉,这是因为我遗漏了$scope和orderBy的实际工作方式 我正在创建一个列表,显示我所在地区今年的作家。我将用户划分为工厂,并将其显示出来。但是,我在整理它们时遇到了一些问题。名称和字数排序没有问题。但计算出的平均字数根本不是排序。它甚至不会调用我为它创建的函数 这是我的简化布局,还有 JS: HTML:Javascript 带有自定义函数的AngularJS OrderBy,javascript,angularjs,angularjs-orderby,Javascript,Angularjs,Angularjs Orderby,我对AngularJS是个新手,但到目前为止,我已经能够对一切都了如指掌。但是OrderBy给我带来了麻烦。我还没有发现像我这样的问题。我有一种感觉,这是因为我遗漏了$scope和orderBy的实际工作方式 我正在创建一个列表,显示我所在地区今年的作家。我将用户划分为工厂,并将其显示出来。但是,我在整理它们时遇到了一些问题。名称和字数排序没有问题。但计算出的平均字数根本不是排序。它甚至不会调用我为它创建的函数 这是我的简化布局,还有 JS: HTML: 用户名 总字数 平均WPD {{use
用户名
总字数
平均WPD
{{user.name}
{{user.wordcount}
{{avgWords(用户)}
单击平均WPD标题时,将$scope.sort设置为字符串“avgWords”。因此,orderBy使用此字符串对用户进行排序,从而根据用户的
avgWords
字段的值对用户进行排序,该字段始终是未定义的
如果要使用自定义函数而不是字段进行排序,则必须将$scope.sort
设置为要排序的函数:
$scope.sort = $scope.avgWords;
为此,标题上的ng单击应为
sortChange(avgWords)
您始终可以将average word属性添加到作用域上用户数组中的对象中。这样,每一列都可以通过适当的属性进行过滤…因此
$scope.users=userData;
$scope.day=30;
对于(变量i=0;i<$scope.users.length;i++){
$scope.users[i].avgWords=Math.floor($scope.users[i].wordcount/$scope.day);
}
啊,我错过了。那应该是这样设置的。但问题仍然是一样的。我将我的点击设置为sortChange('sorgAvg')以与函数相对应,但它从未被调用。现在我知道我在做什么了。你说得对。问题在于调用sortChange('avgWords')和sortChange(avgWords)之间的区别。一个查找属性,另一个查找函数。一直以来,这都是由两个“”引起的!谢谢。为了准确起见,另一个并不是专门寻找函数。它寻找当前作用域中名为avgWords的属性,不管它的类型是什么。我有同样的想法,但问题是用户可以动态添加。它不会更新新用户,只更新初始加载的用户。这样做更有意义。avgWords自然应该是用户的属性。看看这个。因此,在您的Xhr请求之后,只需添加它们。
$scope.sort = $scope.avgWords;
sortChange(avgWords)
$scope.users = userData;
$scope.day = 30;
for(var i=0; i < $scope.users.length; i++){
$scope.users[i].avgWords = Math.floor($scope.users[i].wordcount / $scope.day);
}