#javascript #angularjs #ng-grid
#javascript #angularjs #ng-grid
Вопрос:
Я новичок в angular JS, и я думаю, что мне нужна помощь.
Это моя проблема: у меня есть ng-grid, который связан с таблицей. Внутри есть значения и идентификатор (который является внешним ключом из другой таблицы). Я не хочу показывать идентификатор, а другое поле в этой внешней таблице.
CompanyFactory.getCompanies().success(function (data) { $scope.objs = data })
$scope.gridOptions = {
data: 'objs',
showGroupPanel: true,
jqueryUIDraggable: true,
columnDefs: [
{ field: 'COMP_NAME', displayName: 'comp_name'},
{ field: 'COUNTRY', displayName: 'country' },
{ field: 'LU_SECTOR_ID', displayName: 'sector', },
]
};
Я хочу показать поле sector_name вместо поля sector_ID. Как я могу установить связь между этими двумя таблицами?
$scope.countries = [
{ COMP_NAME: 'KOLI', COUNTRY: 'KOLI_COUNTRY', LU_SECTOR_ID: '1'},
{ COMP_NAME: 'ZOLI', COUNTRY: 'ZOLI_COUNTRY', LU_SECTOR_ID: '2'},
{ COMP_NAME: 'TULI', COUNTRY: 'TULI_COUNTRY', LU_SECTOR_ID: '3'},
];
$scope.sector= [
{ LU_SECTOR_ID: '1', LU_SECTOR_NAME: 'SECTOR_1'},
{ LU_SECTOR_ID: '2', LU_SECTOR_NAME: 'SECTOR_2'},
{ LU_SECTOR_ID: '3', LU_SECTOR_NAME: 'SECTOR_3'},
];
Я хотел бы показать в ng-grid ИМЯ СЕКТОРА вместо SECTOR_ID.
Комментарии:
1. Не могли бы вы опубликовать фрагмент
data
объекта? Если вам нужно буквально соединить объекты перед привязкой, вам нужно будет сделать это вручную.2. Извините, я не понял. Я имел в виду
$scope.objs = data
, не могли бы вы опубликовать фрагмент объекта в формате JSON? Не столбцы.3. Как вы можете сделать привязку вручную? Большое спасибо за вашу помощь
4. Смотрите мой ответ, вы должны связать оба объекта перед привязкой к сетке. Это будет проще и намного элегантнее.
Ответ №1:
Трудно ответить на вопрос без информации об data
объекте.
Однако предположим, что ваш data
объект, возвращаемый вашим CompanyFactory
, представляет собой что-то вроде:
[
{
"COMP_NAME": "Tomms",
"COUNTRY": "France",
"LU_SECTOR_ID": "9":,
"SECTOR": { "SECTOR_NAME": "IT" }
}
]
Вам просто нужно привязать правильное поле:
$scope.gridOptions = {
data: 'objs',
showGroupPanel: true,
jqueryUIDraggable: true,
columnDefs: [
{ field: 'COMP_NAME', displayName: 'comp_name'},
{ field: 'COUNTRY', displayName: 'country' },
// Here
{ field: 'SECTOR.SECTOR_NAME', displayName: 'sector', },
]
};
Но, если вы возвращаете оба объекта разделенными, вам нужно будет связать их вручную. Я предлагаю выполнить это на стороне сервера и вернуть объект, как я использовал в качестве примера.
Комментарии:
1. Большое вам спасибо 🙂
Ответ №2:
проблема здесь
{ field: 'LU_SECTOR_ID', displayName: 'sector', }
В частности
LU_SECTOR_ID
вам нужно изменить имя этой переменной, чтобы оно было именем в objs, а не идентификатором