Встроенное редактирование виджета Dojo - PullRequest
0 голосов
/ 24 июня 2011

Я создал виджет додзё для отображения данных формы.Я хочу включить встроенное редактирование в этом виджете.Сначала я начал экспериментировать, написав HTML в виде строк в JavaScript.Я не хочу этого делать.dojo предоставляет интерфейс dojo.cache () для загрузки html-файлов в качестве шаблонов.Использовал этот метод для загрузки данных шаблона для просмотра формы.

Для редактирования формы.Будет отправлен вызов ajax, и я получу данные типа поля.Исходя из этого, я должен проанализировать HTML-код для встроенного редактора.

Мой вопрос: как использовать dojo.cache () и получить HTML-код на основе типа ввода.Шаблон может содержать данные типа

<input type="text" />
or
<select></select>
or
<textarea></textarea>
or
<div class="autocomplete"></div>

или что-то еще ... Могу ли я определить все эти шаблоны в одном файле и получить файл с помощью dojo.cache ()?В этом случае я застрял в том, как выбрать обязательное поле.

1 Ответ

1 голос
/ 24 июня 2011

Я не уверен, насколько сложны шаблоны, которые вы вводите через dojo.cache, но рассматривали ли вы возможность использования dojo.create () в качестве альтернативы? Это позволит программно создавать элементы DOM.

Что касается вашего решения, я сначала был озадачен тем, что вы пытаетесь сделать, но, думаю, я понял это сейчас. На странице, на которой вы отображаете данные, вы хотите, чтобы пользователь мог выбрать некоторые данные для редактирования, и когда они выполнят это действие, на их месте появится соответствующий редактируемый контейнер, чтобы они могли изменить данные?

Если это так, то я определенно, что dojo.create () является лучшей альтернативой этому, чем HTML-шаблоны, извлеченные из dojo.cache.

dojo.create может быть легко использован с переменными, которые возвращаются из вашего вызова службы XHR, так что тип создаваемого элемента будет зависеть от ответа, который вы получите от сервера.

var editEle = dojo.create(data.elementType); (при условии, что data - это имя переменной, в которой вы получили свой ответ, а elementType - это свойство для объекта, содержащего тип элемента, который необходимо создать.

Вы также можете передать литерал объекта во второй аргумент dojo.create, чтобы указать параметры на узле: dojo.create('input', {type: 'text'});

...