Как заполнить пару ключ-значение при материализации - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь заполнить ключ и значение на модальном при нажатии кнопки, который я не могу заполнить.

Я пытаюсь получить modelinfo (JSON), кроме "modelname".Я хочу, чтобы все ключи и значения были заполнены модально.Но здесь я могу получить только последние значения.

Вот мой код:

$('.addAttribute').click(function() {
  if (deviceIdStatus === 'old') {
    var getModelDetails = ajaxServices("/getServices/models", "GET");
    console.log(JSON.stringify(getModelDetails));
    $('#modelName').val(getModelDetails[0].modelinfo.modelname).attr('disabled', 'disabled');
    $.each(getModelDetails, function(i, el) {
      $.each(el.modelinfo, function(key, val) {
        if (key != "modelname") {
          console.log(key + ":" + val);
          $(".addModel").trigger("click");
        };
        $.each(el.modelinfo, function(key, val) {
          if (key != "modelname") {
            console.log(key + ":" + val)
            $(".modelAttribute").val(key);
            $(".modelType").val(val);
          }
        });
      })
    })
  }
});

При нажатии кнопки addAttribute я получаю значение ключа на модальном уровне.Но я получаю только последнее значение везде.Я проверяю на основе идентификатора устройства.Если deviceId старый, то модель имеет ключ и значение в базе данных.Я не могу получить значения из базы данных.Я использую orientdb.

Это JSON, где я пытаюсь заполнить modelinfo, кроме имя модели

[{
  "@type": "d",
  "@class": "models",
  "templateId": "#31:0",
  "modelinfo": {
    "modelname": "obdDataModel",
    "temp": "2",
    "hum": "1",
    "co": "0"
  },
  "deviceid": "ANX2345613",
  "@rid": "#39:0",
  "@version": 9
}]

Вот как выглядит мой вывод, вывод имеет только последнее заполненное значение ключа:

Output

1 Ответ

0 голосов
/ 14 мая 2018

Проблема здесь.

$(".modelAttribute").val(key);
$(".modelType").val(val);

jQuery Class селектор изменит значение всех элементов.

Вы пишете точное количество контейнеров контента, как это?

<!-- div 1 -->
<div>
  <input type="text" class="modelAttribute" />
  <input type="text" class="modelType" />
</div>
<!-- div 2 -->
<div>
  <input type="text" class="modelAttribute" />
  <input type="text" class="modelType" />
</div>
<!-- div 3 -->
<!-- div 4 -->

Вы должны написать код так:

  $.each(el.modelinfo, function(key, val) {
    if (key != "modelname") {
      // create element
      var template = `
        <div>
          <input type="text" class="modelAttribute" value="${key}" />
          <input type="text" class="modelType" value="${value}" />
        </div>
      `;
      $("#bigContainerWhatever").append(template);
    }
});
...