Когда я использую несколько заглавных букв в ячейках заголовка (например, GPRS), они автоматически разделяются пробелами (G P R S). Это особенно раздражает, когда у меня есть два слова (сигнал GPRS отображается как сигнал G P R S) или два аббревиатуры (GPRS EDGE отображается как G P R S E D G E). Это значит быть таким? Если да, то как я могу отключить его?
Angular UI Сетка между заглавными буквами в заголовке
Ответ 1
Я только что нашел способ обойти это. В свойстве columnDefs вашего gridOptions добавьте displayName для столбца, который содержит несколько заглавных букв. Что-то вроде этого:
$scope.gridOptions = {
columnDefs: [
{ name: 'GPRS', displayName: 'GPRS', field: 'gprsField' }
]
};
Ответ 2
Чтобы ответить на вопрос: как его отключить?
Я изменил исходный код. Мое приложение использует локальную копию файла в lib/ui-grid.info-x.x.x/release/ui-grid.js
Найдите функцию, называемую readableColumnName, и замените или запишите следующее:
return columnName;
//return columnName.replace(/_+/g, ' ')
// Replace a completely all-capsed word with a first-letter-capitalized version
//.replace(/^[A-Z]+$/, function (match) {
// return angular.lowercase(angular.uppercase(match.charAt(0)) + match.slice(1));
//})
// Capitalize the first letter of words
//.replace(/([\w\u00C0-\u017F]+)/g, function (match) {
// return angular.uppercase(match.charAt(0)) + match.slice(1);
//})
// Put a space in between words that have partial capilizations (i.e. 'firstName' becomes 'First Name')
// .replace(/([A-Z]|[A-Z]\w+)([A-Z])/g, "$1 $2");
// .replace(/(\w+?|\w)([A-Z])/g, "$1 $2");
//.replace(/(\w+?(?=[A-Z]))/g, '$1 ');
Другими словами, просто верните имя столбца, не заменяйте.
Не забудьте перезагрузить файлы своей веб-страницы/javascript, прежде чем тестировать, что он работает правильно.
Ответ 3
Вы также можете использовать свойство отображаемого имени в UI-Grid: displayName: 'CAPITAL WORDS'
displayName: имя столбца, которое будет отображаться в заголовке. Если displayName не предоставляется, тогда создается имя с именем.