как передать только ключи и их значения в качестве параметра объекта javascript - PullRequest
0 голосов
/ 25 октября 2018

Чтобы уменьшить длину моего кода, я решил создать функцию javascript для инициализации плагина select2.сейчас я пишу очень длинный код для инициализации одного элемента.

$("#add_multiple_lr #trips_div .last_added .location_id").select2({
  initSelection: function(element, callback) {
    var elementText = $(element).attr('json-value');
    callback(JSON.parse(elementText));
  },
  minimumInputLength: 2,
  ajax: {
    url: "<?php echo site_url('masters/locations/json_search'); ?>",
    dataType: 'json',
    type: "POST",
    quietMillis: 50,
    data: function (term) {
      return {
        term: term,
        location_type: 'station',
        location_county: ['india', 'bangladesh']
      };
    },
    results: function (data) {
      return {
        results: $.map(data, function (item) {
          return {
            text: item.text,
            id: item.id
          }
        })
      };
    }
  }
});

для одного или двух элементов это нормально, писать этот код, но когда дело доходит до 10-15 элементов, это становится очень запутанным и длиннымкод для этого я разработал ниже code.

function initSelect2(reference, url, additional_data = {}, minimumInputLength = 2)
{
  $(reference).select2({
    initSelection: function(element, callback) {
      var elementText = $(element).attr('json-value');
      callback(JSON.parse(elementText));
    },
    minimumInputLength: minimumInputLength,
    ajax: {
      url: url,
      dataType: 'json',
      type: "POST",
      quietMillis: 50,
      data: function (term) {
        return {
          term: term,
          additional_data
        };
      },
      results: function (data) {
        return {
          results: $.map(data, function (item) {
            return {
              text: item.text,
              id: item.id
            }
          })
        };
      }
    }
  });
}

и назвав его

initSelect2(
  "#add_multiple_lr #lr_party, #add_multiple_lr #lr_payable_party",
  "<?php echo site_url('masters/locations/json_search'); ?>",
  {location_type: 'station', location_country: ['india', 'bangladesh']}
);

я просто хочу вернуть ключи extra_data (параметра) и их свойство.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Когда ваша среда поддерживает последний ECMAScript, вы можете использовать синтаксис распространения объекта:

return {
  term: term,
  ...additional_data
};

В противном случае вы можете использовать Object.assign ():

return Object.assign({term: term}, additional_data);
0 голосов
/ 25 октября 2018

Вы можете использовать синтаксис распространения для этого:

return {
    term,
    ...additional_data
};

Для старых браузеров вы можете использовать метод jQuery extend (как вы, кажется, используете jQuery):

return $.extend({ term: term }, additional_data);
...