Как привязать события к динамически создаваемому html?

У меня есть проект, в котором, когда вы нажимаете теги, информация в средней части будет меняться, вызывая функцию, которая изменяет текущее значение модели, которая отображается в виде HTML в этом конкретном разделе.

Если сгенерированный HTML имеет больше тегов, как связать их, чтобы они вызывали ту же упомянутую функцию, что и другие теги?

Скриншот

Прямо сейчас, когда вы щелкаете по метке в середине, метод не вызывается и ничего не меняется, но когда вы щелкаете по меткам в верхней части, секция середины детали перерисовывается. Я пробовал с другим звонком applyBindings но это сделало верхние метки для дублирования.

Это код функции, которую я хочу вызвать:

 @Function
    static void changeFP(final Dictionary model) {
        String searchP = model.getSearchPhrase();
        final List<String> listOfTerms = model.getTermList();
        for (int i = 0; i < listOfTerms.size(); i++) {
            final String term = listOfTerms.get(i);
            if (stringsAreEqual(term, searchP)) {
                model.setFoundPhrase(term);
                model.setDescription(model.getDefinitionList().get(i));
                model.setCode(model.getExampleCodeList().get(i));
                return;
            }
        }
        model.setDescription("");
        model.setCode("");
        model.setFoundPhrase(
                ResourceBundle.getBundle(
                        "web/aprendiendola/dictionaryweb/aprendiendola/dictionary/DiccionarioDeJava/TranslateMe"
                //        , Locale.getDefault()
                //  ,new Locale("ES")
                ).getString("NOTFOUND"));
    }

Часть, где это должно отрендериться:

<div class="card-panel blue lighten-2">
  <h3 data-bind="text: foundPhrase"></h3>
  <p class="white-text" data-bind="html:description" style="min-height: 100px;"></p>
</div>

Текст, который должен быть представлен:

CLASS_INFO= <p>Represent types of objects, but can also refer to other non-object conceps as <a class="chip blue lighten-3 white-text" href="#" data-bind="click:$root.changeSP ">Package-Info</a></p>

(CLASS_INFO= потому что приложение становится интернационализированным)

1 ответ

Если вы хотите применить привязку для определенной части вашего html, вместо myModel.applyBindings() вы можете сделать:

Models.applyBindings (myModel, "id_of_tag");

Это позволяет привязывать разные части страницы к разным моделям. Дайте мне знать, если это решит вашу проблему. Если нет, мне придется посмотреть на весь проект, чтобы увидеть, как это исправить.

Другие вопросы по тегам