2011-06-24 72 views
0

我创建了一个用于显示表单数据的dojo小部件。我想在这个小部件中启用内联编辑。首先,我开始通过在JavaScript中将html编写为字符串来进行试验。我不想这样做。 dojo提供了一个接口dojo.cache()来加载html文件作为模板。使用此方法为表单视图加载模板数据。Dojo小部件内联编辑

对于窗体编辑。 ajax调用将被发送,我将接收字段类型数据。基于此,我必须将html解析为内联编辑器。

我的问题是,如何使用dojo.cache()并根据输入类型获取html。模板中可能包含

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

或更多的东西资料...我可以定义一个文件中的所有这些模板,并获取文件使用dojo.cache()?在这种情况下,我坚持如何选择所需的字段。

回答

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'});