Я пытаюсь создать простую веб-систему, которая загружает произвольное количество элементов (каждый из которых определяет свой собственный рендеринг HTML и динамическое поведение) в контейнере.Контейнер будет определять, какие элементы загружать, загружать их HTML с сервера, а затем инициализировать их параметрами.Вот упрощенный пример:
<!-- container.xhtml -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"/>
<script>
var params = {};
$(document).ready(function() {
params = {'text': 'Text A'};
resp = $.get('item.xhtml', function(data) {
$('.container').append(data);
// want to initialize the new node
data.init(params);
});
params = {'text': 'Text B'};
resp = $.get('item.xhtml', function(data) {
$('.container').append(data);
// want to initialize the new node
data.init(params);
});
});
</script>
<div class="container">
</div>
</body>
</html>
И пример элемента:
<?xml version="1.0" encoding="UTF-8"?>
<!-- item.xhtml -->
<div class="item" xmlns="http://www.w3.org/1999/xhtml">
<script>
<!-- want this function to be called for each "item" node created -->
function initialize(item, params) {
item.find('.dynamic').text(params['text']);
}
</script>
<div class="some_class">
Some Content
</div>
<div class="dynamic">
Replace me
</div>
</div>
Проблема, с которой я сталкиваюсь, заключается в том, что я не могу назначить функцию on_load с ее элементом.Я не могу дать div[@class='item']
идентификатор, потому что он может быть загружен несколько раз.
Я хочу сохранить простой контейнер, который требует только загрузки файла и вызова некоторой предписанной функции для инициализации элемента.Если абсолютно необходимо изменить контейнер для включения этой модели, важно минимизировать интерфейс между контейнером и элементом.
Можно ли изменить только код для item.xhtml, чтобы при его загрузкеcontainer.xhtml, вызовы data.init () вызовут функцию initialize () с соответствующим узлом элемента и параметрами?Если нет, то как можно достичь этой модели другими способами?Есть ли лучший подход к этой проблеме?