Здравствуйте. Начал изучать Angular по каналу kudvenkat. И одно из его видео вызвало пару вопросов, на которые некому ответить.
В функции search(item) присутствует аргумент item, которые мы нигде не указываем в html разметке, только в js. Вопрос: Как в item попадает какое-либо значение, если мы не указываем, что должно туда попасть?
Функция search(item) возвращает булевое значение. Т.е. в HTML получается 'ng-repeat="elem in obj | filter: TRUE/FALSE">'. Если вставить true или false вручную, а не через функцию, то ничего не работает.
Вопрос: Почему? И почему там МОЖЕТ стоять булевое значение вместо строки?
Спасибо! Ответить на эти вопросы некому, поэтому задаю вам!
SEARCH : <input type="text" ng-model="searchText" placeholder="search">
<table>
<thead>
<tr>
<th ng-click="sortData('name')">Name<div ng-class="getClass('name')"></div></th>
<th ng-click="sortData('age')">Age<div ng-class="getClass('age')"></div></th>
<th ng-click="sortData('country')">Country<div ng-class="getClass('country')"></div></th>
<th ng-click="sortData('salary')">Salary<div ng-class="getClass('salary')"></div></th>
<th ng-click="sortData('dateOfBirth')">DateOfBirth<div ng-class="getClass('dateOfBirth')"></div></th>
</tr>
</thead>
<tbody>
<tr ng-repeat="elem in obj | filter:search">
<td>{{elem.name }}</td>
<td>{{elem.age}}</td>
<td>{{elem.country }}</td>
<td>{{elem.salary | currency: $ : 0}}</td>
<td>{{elem.dateOfBirth | date:"dd/MM/yy"}}</td>
</tr>
</tbody>
</table>
var obj = [
{name: 'John',age: 15,country: 'Usa',salary: 33000, dateOfBirth: new Date ('September 09,1996')},
{name: 'Mary', age: 28, country: 'Russia', salary: 21000, dateOfBirth: new Date ('September 09,1996')},
{name: 'Alex', age: 21, country: 'Romania', salary: 53300, dateOfBirth: new Date ('September 09,1996')},
{name: 'Zondo', age: 33, country: 'Italy', salary: 22660, dateOfBirth: new Date ('September 09,1996')}
];
$scope.obj = obj;
$scope.search = function(item) {
if($scope.searchText == undefined) {
return true;
}
else {
if(item.name.toLowerCase().indexOf($scope.searchText.toLowerCase()) != -1 || item.country.toLowerCase().indexOf($scope.searchText.toLowerCase()) != -1) {
return true;
}
}
return false;
}