0

我创建了一个用于显示表单数据的 dojo 小部件。我想在这个小部件中启用内联编辑。首先,我开始尝试用 JavaScript 将 html 编写为字符串。我不想这样做。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() 获取文件吗?在这种情况下,我被困在如何选择必填字段上。

4

1 回答 1

1

我不确定您将通过 dojo.cache 引入的模板有多复杂,但您是否考虑过使用dojo.create()作为替代方案?这也将允许以编程方式创建 DOM 元素。

关于您的解决方案,起初我对您正在尝试做的事情感到困惑,但我想我现在明白了。在您显示数据的页面中,您希望用户能够选择一些数据进行编辑,并且当他们执行该操作时,适当的可编辑容器将显示在其位置以便他们更改数据?

如果是这种情况,我肯定 dojo.create() 比从 dojo.cache 中提取的 HTML 模板更好。

dojo.create 可以很容易地与从您的服务 XHR 调用返回的变量一起使用,以便创建的元素类型将取决于您从服务器获得的响应。

var editEle = dojo.create(data.elementType);(假设 data 是您响应的变量的名称, elementType 是包含需要创建的元素类型的属性。

您还可以将对象文字传递给 dojo.create 的第二个参数以指定节点上的参数: dojo.create('input', {type: 'text'});

于 2011-06-24T14:07:00.920 回答