Я разработал директиву Angular для отображения визуализации D3. Я использую $filter в функции tickFormat на моей оси y так:
ySalesAxis = d3.svg.axis()
.orient('left')
.ticks(6)
.scale(ySalesScale)
.tickFormat(function(d) {
return $filter('formatSalesValue')(d.value, 'USD');
});
Проблема, которую я вижу, заключается в том, что ни одна из этих меток не появляется, когда страница загружается первой. Действительно, если я console.log($filter('formatSalesValue')(d.value, 'USD')), я получаю 6 undefined (так как для свойства ticks установлено значение 6). Однако, как только я предпринимаю действие, щелкнув внутри фильтра кисти, например, метки ярлыков отображаются правильно отформатированными.
Мой фильтр formatSalesValue вызывает службу (асинхронная операция), потому что в систему и из нее задействованы десятки валют, подробности о которых я извлекаю из БД. Я уверен, что по этой причине мои метки ярлыков undefined. Что я могу сделать, чтобы убедиться, что эти значения отображаются сразу после загрузки страницы? Примечание. Я попытался обернуть мою функцию tickFormat при вызове scope.$apply, но я получаю ошибку digest already in progress.
