У меня такое чувство, что мне не хватает чего-то обманчиво простого здесь ... Я создал приложение в сжатые сроки, поэтому я создал контроллеры, фильтры и даже статическую службу в один файл app.js.Угловые фильтры, не работающие в компоненте
Теперь я работаю над разрывом приложения, используя модель .component() и создавая более совершенную автономную службу для получения данных в реальном времени из db. Преобразование в компоненты работает хорошо, но я попадаю в ловушку с фильтрами. Они все еще находятся в исходном app.js и отлично работают, когда контроллеры были определены там, но теперь фильтры, похоже, не работают в новых шаблонах компонентов. Когда я применяю фильтр к значению в шаблоне компонента, значение, похоже, не возвращается, и на странице ничего не отображается.
Пример фильтра:
app.filter('commaDelimitedNumber', function(){
return function(val){
var v = (val !== undefined) ? val.toString() : '0';
return v.replace(/\B(?=(\d{3})+(?!\d))/g, ',');
};
});
вызовов из компонента:
<div>{{ $ctrl.metric.shortVals[$ctrl.currentFilter] | display:[$ctrl.currentFilter] | commaDelimitedNumber }}</div>
Дополнительное примечание ... Компонент, содержащий фильтр является подкомпонент, используя эту структуру:
angular.module (index.html including the app.js file)
<metrics-component> (component .js file with template html file which contains...)
<metrics-list-component> (component .js file with template html file which contains...)
<metric-component> (component .js file with template html file which contains...)
<div>{{ 12345678 | commaDelimitedNumber }}</div>
Я не понимаю, что вы подразумеваете под * субкомпонентом *? Как объединить/включить эти файлы в HTML? Если фильтр не найден, следует исключить исключение. Есть ли ошибки в консоли JS? – fracz
Ошибок в консоли нет. под «подкомпонентом» я имею в виду, что этот компонент является дочерним элементом компонента, который является дочерним элементом компонента, который находится в index.html. Компоненты «сливаются» через структуру .component() во время выполнения. Я переработаю приведенный выше пример, чтобы сделать его более понятным. – Eric