Thymeleaf передает объект в javascript и получает доступ к его свойствам: не определено

#javascript #thymeleaf

#javascript #thymeleaf

Вопрос:

Я потратил много часов на изучение этого и применил все решения, но не могу заставить свой код работать. У меня есть select, который содержит объект в качестве значения (не может быть изменен из-за привязки данных) при изменении, он вызывает функцию js, которая обращается к свойству id объекта, содержащемуся в атрибуте value, но возвращает undefined. Есть ли способ получить к этому доступ. Я безуспешно пробовал JSON.parse и JSON.stringify и комбинацию из двух для объекта.

вот мой выбор:

 <select th:field="*{category}" class="custom-select" id="category" style="padding: 0px" onchange="getInstitutions()">
       <option value="a" selected>select one..</i></option>
       <option th:each="category : ${categories}"
                    th:value="${category}"
                    th:text="${category.name}"
                    th:data="${category.id}"
                    selected></option>
</select>
  

Вот моя функция JS:

 function getInstitutions() {
    var cat = $("#category").val();
    //cat=JSON.stringify(cat);
    var catId=cat.id;
    alert(catId); // undefined
    // use id to query db using ajax...
}
  

Комментарии:

1. можете ли вы показать $("#category").val() это значение

2. У вас нет возможности динамически оценивать и получать поле идентификатора объекта в вашей JS-функции после рендеринга шаблона. Вы можете сделать две вещи. 1) Вы можете присвоить свое object.id значение значению вашего параметра с помощью th.value="${category.id}" , а затем получить и использовать его в вашем JS. 2) Вы можете использовать пользовательский атрибут option, как вы сделали это в своем th:data="${category.id}" , и получить его в своем JS

3. Спасибо @prasanth и Ahmet. Я использовал $ {category.id } затем я позже привязываю данные в методе сохранения контроллера