2016-07-13 6 views
0

У меня такое чувство, что мне не хватает чего-то обманчиво простого здесь ... Я создал приложение в сжатые сроки, поэтому я создал контроллеры, фильтры и даже статическую службу в один файл 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> 
+0

Я не понимаю, что вы подразумеваете под * субкомпонентом *? Как объединить/включить эти файлы в HTML? Если фильтр не найден, следует исключить исключение. Есть ли ошибки в консоли JS? – fracz

+0

Ошибок в консоли нет. под «подкомпонентом» я имею в виду, что этот компонент является дочерним элементом компонента, который является дочерним элементом компонента, который находится в index.html. Компоненты «сливаются» через структуру .component() во время выполнения. Я переработаю приведенный выше пример, чтобы сделать его более понятным. – Eric

ответ

0

Ух ... Я нашел проблему. Проблема была не в комбо-компоненте/фильтре, это была часть данных, которые я не переносил с помощью компонентов. Я ожидал сложнейшей проблемы, и это оказалось недосмотром. К сожалению!

Смежные вопросы