На основе этого jsfiddle: http://jsfiddle.net/2ZzZB/56/ошибка с angularjs фильтром
я добавить раствор фильтра для моего приложения: http://www.monde-du-rat.fr/zombieReport/popup.html#/ratousearch (Ctrl: http://www.monde-du-rat.fr/zombieReport/resources/js/controllers/RatousearchCtrl.js)
//We already have a limitTo filter built-in to angular,
//let's make a startFrom filter
app.filter('startFrom', function() {
return function(input, start) {
start = +start; //parse to int
return input.slice(start);
}
});
Смотри консоли, ошибка становится на работу:
TypeError: undefined is not a function
at http://www.monde-du-rat.fr/zombieReport/resources/js/baseChrome.js:368:22
at http://www.monde-du-rat.fr/zombieReport/resources/libs/angularjs/angular-1.3.0-rc.0/angular.min.js:180:297
at B.| (http://www.monde-du-rat.fr/zombieReport/resources/libs/angularjs/angular-1.3.0-rc.0/angular.min.js:169:248)
at B.constant (http://www.monde-du-rat.fr/zombieReport/resources/libs/angularjs/angular-1.3.0-rc.0/angular.min.js:179:161)
at B.| (http://www.monde-du-rat.fr/zombieReport/resources/libs/angularjs/angular-1.3.0-rc.0/angular.min.js:169:253)
at B.constant (http://www.monde-du-rat.fr/zombieReport/resources/libs/angularjs/angular-1.3.0-rc.0/angular.min.js:179:161)
at Object.c (http://www.monde-du-rat.fr/zombieReport/resources/libs/angularjs/angular-1.3.0-rc.0/angular.min.js:101:146)
at m.$digest (http://www.monde-du-rat.fr/zombieReport/resources/libs/angularjs/angular-1.3.0-rc.0/angular.min.js:114:386)
at m.$apply (http://www.monde-du-rat.fr/zombieReport/resources/libs/angularjs/angular-1.3.0-rc.0/angular.min.js:118:12)
at k (http://www.monde-du-rat.fr/zombieReport/resources/libs/angularjs/angular-1.3.0-rc.0/angular.min.js:76:374)
линия
return input.slice(start);
что не так? я не видел ошибку в примере jsfiddle
HTML:
<div id="results" ng-show="successLordZR">
<p class="myTitle">{{ 'TRS_CTRL3_TEXT1' | translate }} :</p>
<ul class="list-group">
<li class="list-group-item" ng-repeat="post in posts | startFrom:currentPage*pageSize | limitTo:pageSize">
<div class="myClearfix">
<p style="float: left;"><span ng-class="{'girl' : post.sex == 'F', 'boy' : post.sex == 'M'}">#</span> {{post.prefixe}} {{post.name}} ({{post.idLord}})</p>
<p style="float: right;"><a href="http://lord-rat.org/rats/rat_details.php?id={{post.id}}" title="lien lord" ng-click="createTab('http://lord-rat.org/rats/rat_details.php?id=' + post.id, $event);"><i class="fa fa-link"></i> fiche</a></p>
</div>
</li>
</ul>
<div id="pagination">
<button type="button" class="btn btn-primary btn-xs" ng-disabled="currentPage == 0" ng-click="currentPage=currentPage-1"><i class="fa fa-arrow-circle-o-left"></i> {{ 'TRS_CTRL3_PREV' | translate }} </button>
<span> {{currentPage+1}}/{{numberOfPages()}} </span>
<button type="button" class="btn btn-primary btn-xs" ng-disabled="currentPage >= posts.length/pageSize - 1" ng-click="currentPage=currentPage+1"> {{ 'TRS_CTRL3_NEXT' | translate }} <i class="fa fa-arrow-circle-o-right"></i></button>
</div>
</div>
Пример данных JSON из Laravel: http://www.monde-du-rat.fr/lordrest/public/posts_jsonforced
EDIT 2 фильтра в контроллере:
// populate scope
$scope.posts = response;
$scope.posts = $filter('startFrom')($scope.currentPage*$scope.pageSize);
фильтр находится здесь: http://www.monde-du-rat.fr/zombieReport/resources/js/filtersZR.js
Вы правы, у меня есть ошибка, где нет данных для заполнения сообщений, я обновляю данные сообщений с помощью var myQuery = newData.query(); Есть ли подсказка, чтобы сказать, что фильтр тихий, где нет данных, или есть ошибка моего текущего кода? – JoDiii
Я отредактировал мой вопрос с новым кодом, я пытаюсь использовать фильтр непосредственно в контроллере, для управления им. вы можете попробовать «ar» в поисковом входе, потому что ошибка всегда здесь через консоль – JoDiii
@JoDiii Для первого вопроса: я бы добавил проверку кода для недопустимого ввода перед обработкой, когда нет данных; и я бы использовал единичный тест для минимизации последнего. Для второго вопроса вам необходимо передать входное значение функции фильтра в контроллере, попробуйте изменить строку на '$ scope.posts = $ filter ('startFrom') ($ scope.posts, $ scope.currentPage * $ scope ,pageSize); ' –