Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.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 OrderBy_Javascript_Angularjs_Angularjs Orderby - Fatal编程技术网

Javascript 带有自定义函数的AngularJS OrderBy

Javascript 带有自定义函数的AngularJS OrderBy,javascript,angularjs,angularjs-orderby,Javascript,Angularjs,Angularjs Orderby,我对AngularJS是个新手,但到目前为止,我已经能够对一切都了如指掌。但是OrderBy给我带来了麻烦。我还没有发现像我这样的问题。我有一种感觉,这是因为我遗漏了$scope和orderBy的实际工作方式 我正在创建一个列表,显示我所在地区今年的作家。我将用户划分为工厂,并将其显示出来。但是,我在整理它们时遇到了一些问题。名称和字数排序没有问题。但计算出的平均字数根本不是排序。它甚至不会调用我为它创建的函数 这是我的简化布局,还有 JS: HTML: 用户名 总字数 平均WPD {{use

我对AngularJS是个新手,但到目前为止,我已经能够对一切都了如指掌。但是OrderBy给我带来了麻烦。我还没有发现像我这样的问题。我有一种感觉,这是因为我遗漏了$scope和orderBy的实际工作方式

我正在创建一个列表,显示我所在地区今年的作家。我将用户划分为工厂,并将其显示出来。但是,我在整理它们时遇到了一些问题。名称和字数排序没有问题。但计算出的平均字数根本不是排序。它甚至不会调用我为它创建的函数

这是我的简化布局,还有

JS:

HTML:


用户名
总字数
平均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);
    }