Angular JS заменяет значения в сетке

#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, а не идентификатором