我创建了一个用于显示表单数据的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()获取文件吗?在这种情况下,我坚持如何选择所需的字段。
答案 0 :(得分:1)
我不确定您通过dojo.cache引入的模板有多复杂,但您是否考虑过使用dojo.create()作为替代方案?这将允许以编程方式创建DOM元素。
关于你的解决方案,我一开始很困惑你想要做什么,但我想我现在就明白了。在您显示数据的页面中,您希望用户能够选择一些要编辑的数据,当他们执行该操作时,将在其位置显示适当的可编辑容器以便他们更改数据?
如果是这种情况,我绝对是dojo.create()比从dojo.cache引入的HTML模板更好的替代方案。
dojo.create可以很容易地与从服务XHR调用返回的变量一起使用,这样创建的元素类型将取决于您从服务器获得的响应。
var editEle = dojo.create(data.elementType);
(假设数据是您拥有响应的变量的名称,而elementType是包含需要创建的元素类型的属性。
您还可以将对象文字传递给dojo.create的第二个参数,以指定节点上的参数:
dojo.create('input', {type: 'text'});