Я разработал директиву 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
.