Я создаю таблицу, в которой строки и столбцы строятся полностью на основе данных, которые ей отправляются.
Я очень близок к тому, чтобы это сработало, мне трудно понять, как создать собственный фильтр и динамически передавать шаблоны фильтров.
Объект, из которого состоят столбцы, выглядит так:
{ name: 'transactionDate', displayName: 'Date / Time', displayOrder: 1, filter: "date: 'MM/dd/yy hh:mm a'" }
Объект, из которого состоит транзакция для строк, выглядит следующим образом:
{ transactionDate: '2015-06-11', transactionType: 'This Type', transactionAmount: 25 }
HTML у меня такой:
<td ng-repeat="col in columns">{{transaction[col.name] | dynamicFilter: col.filter}}</td>
Фильтр, который я сейчас создал:
function dynamicFilter($filter) {
return function (value, filter) {
console.log(filter);
console.log(value);
var test = $filter(filter)(value);
return test;
}
}
И фильтр, и значение передаются правильно. У меня возникли проблемы с выяснением того, как применить фильтр к значению перед возвратом. Значение, которое может быть передано, будет 2015-06-10T16:17:14
, а фильтр, который будет передан, может быть date: 'MM/dd/yy hh:mm a'
для создания фильтра даты/времени. Или 21
и currency
для долларовой стоимости.
Я хотел бы иметь возможность использовать встроенные функции Angular так же, как и в представлении
filterFn = (date, format, timezone)
. Тем не менее, возвращение не возвращается ни с чем 12.06.2015$filter('date')(value, format, timezone);
. Который можно так же назвать какvar filterFn = $filter('date'); filterFn.apply(filterFn, [value, format, timezone]);
. Демонстрация JSFiddle, которую я добавил к ответу, должна помочь. 12.06.2015