저는 AngularJS를 처음 사용 합니다만, 지금까지 모든 것을 내 머리 속에 감쌀 수있었습니다. 하지만 OrderBy가 문제를 일으키고 있습니다. 그리고 나는 아직 어떤 문제도 발견하지 못했습니다. 나는 $ scope와 orderBy가 실제로 어떻게 작동하는지에 대해 뭔가를 놓치고 있다는 느낌이 들었습니다.맞춤 함수가있는 AngularJS OrderBy
나는이 지역 NaNoWriMo에 작가를 표시 할 목록을 만들고 있습니다. 사용자를 공장으로 분리하여 표시했습니다. 그러나 나는 그들을 분류하는 데 문제가있다. 이름과 단어 수는 문제없이 정렬됩니다. 그러나 계산 된 평균 단어 수는 전혀 정렬되지 않습니다. 그것은 그것을 위해 만든 함수를 호출하지 않습니다.
여기 내 간단한 레이아웃과 JSFiddle setup (updated)입니다.
JS :
(function() {
var app = angular.module('userList', []);
app.controller('ListController', ['$scope',
function ($scope) {
$scope.users = userData;
$scope.day = 30;
$scope.avgWords = function (user) {
return Math.floor(user.wordcount/$scope.day);
};
$scope.sort = "name";
$scope.sortRev = false;
$scope.sortChange = function (field) {
if ($scope.sort === field) {
$scope.sortRev = !$scope.sortRev;
return;
}
$scope.sort = field;
$scope.sortRev = false;
};
$scope.sortAvg = function (user) {
alert("sorted!");
return Math.floor(user.wordcount/$scope.day);
};
}]);
var userData = [{
"name": "Kris",
"wordcount": 42382
}, {
"name": "Tim",
"wordcount": 60120
}, {
"name": "Elsa",
"wordcount": 150675
}];
})();
HTML :
<div ng-controller="ListController">
<table>
<thead>
<tr>
<th ng-click="sortChange('name');">Username</th>
<th ng-click="sortChange('wordcount');">Total Words</th>
<th ng-click="sortChange('sortAvg');">Average WPD</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="user in users | orderBy:sort:sortRev">
<td>{{user.name}}</td>
<td>{{user.wordcount}}</td>
<td>{{avgWords(user)}}</td>
</tr>
</tbody>
</table>
아 등의 각 열은 해당 속성에 의해 필터링 할 수 있습니다 방법 ... 그래서 뭔가, 나는 그것을 놓쳤다. 그렇게 설정되어 있어야합니다. [다음은 업데이트 된 바이올린입니다.] (http://jsfiddle.net/btronk/6dma7yhc/1/). 그러나 문제는 여전히 동일합니다. 함수에 해당하는 sortChange ('sorgAvg')로 클릭을 설정했지만 절대 호출되지 않습니다. –
이제 나는 내가하고있는 것을보고있다. 네가 옳아. 이 문제는 sortChange ('avgWords')와 sortChange (avgWords) 호출의 차이점입니다. 하나는 속성을 찾고 다른 하나는 함수를 찾습니다. 이 모든 시간, 그리고 그것은 2에 의해 발생했습니다 ''! 감사. –
정말 정확하려면 다른 하나는 특별히 기능을 찾지 않습니다. 해당 유형이 무엇이든 avgWords라는 현재 범위의 속성을 찾습니다. –