У меня проблема в том, что пользовательские фильтры создают бесконечный цикл дайджеста в angular-meteor. (Страница описания ошибки Angular)
Я сделал рабочий пример в этом plunk с чистым angular. Когда я пытаюсь сделать то же самое с angular-meteor в стиле es6, скрипт работает в бесконечном цикле.
это мой контроллер
class MyController {
constructor($scope, $reactive) {
'ngInject';
$reactive(this).attach($scope);
this.items = [{ item: 'item1' }, { item: 'item2' }, { item: 'item3' }, { item: 'item4' }];
}
}
А это шаблон
<div ng-repeat="item in vm.items | testFilter">
Item: {{item.item}}
</div>
Реализация фильтра просто делает копию исходного содержимого (поэтому ничего не фильтрует, кроме демонстрации).
[...]
.filter('testFilter', () => {
return (items) => {
var result = angular.copy(items);
// maybe splice some elements from result
return result;
};
})
[...]
Я не понимаю, почему это работает в простом angularjs, но не работает в метеоре. Это из-за перевода es6=>es5? Я что-то упускаю и неправильно использую фильтры? Или я нашел ошибку углового метеора?
Буду рад совету. :)
Обновлять
- Я выяснил, что эту ошибку выдает только последний фильтр в цепочке. Так может случиться, когда переменная передается в область видимости.
- Перевод ES6=>ES5 кажется мне подходящим, когда я проверяю результат в каталоге сборки.