Javascript Dojo InlineEditBox在单击时清除以编程方式设置的初始值
Dojo允许用户单击一段文本,将其转换为编辑框并允许编辑文本(然后可以保存或取消更改) 在我的例子中,我需要以编程方式重写文本框的初始值(实际上是从REST调用)。dojo bug(我假设)会导致在单击InlineEditBox时将其重置为初始值,并且您将“编辑”一个文本框,该文本框中的文本与单击之前的文本不同-这不是最好的UX。Dojo似乎在以编程方式设置值之前首次创建InlineEditBox时保存该值,然后在该框切换到编辑模式时应用该初始值 因此,如果我有一个Javascript Dojo InlineEditBox在单击时清除以编程方式设置的初始值,javascript,dojo,Javascript,Dojo,Dojo允许用户单击一段文本,将其转换为编辑框并允许编辑文本(然后可以保存或取消更改) 在我的例子中,我需要以编程方式重写文本框的初始值(实际上是从REST调用)。dojo bug(我假设)会导致在单击InlineEditBox时将其重置为初始值,并且您将“编辑”一个文本框,该文本框中的文本与单击之前的文本不同-这不是最好的UX。Dojo似乎在以编程方式设置值之前首次创建InlineEditBox时保存该值,然后在该框切换到编辑模式时应用该初始值 因此,如果我有一个div,用文本“initial
div
,用文本“initial”和id=“testDiv”
,在我的JavaScript中:
require(["dijit/InlineEditBox", "dijit/form/Textarea", "dojo/domReady!"],
function(InlineEditBox, Textarea) {
var editBox = new InlineEditBox({
editor: Textarea,
autoSave: false
}, "testDiv").startup();
var editText = "Click to edit text...";
dojo.byId("testDiv").innerHTML = editText; // <-- what can I do instead?
});
require([“dijit/InlineEditBox”、“dijit/form/Textarea”、“dojo/domReady!”),
函数(InlineEditBox,Textarea){
var editBox=新的InlineEditBox({
编辑:Textarea,
自动保存:false
},“testDiv”).startup();
var editText=“单击以编辑文本…”;
dojo.byId(“testDiv”).innerHTML=editText;//这不是一个bug-只是不正确地使用了小部件。事实上,文本节点(双击前)和编辑模式下的textarea是两个不同的DOM元素。如果分配一个innerHTML
属性,第二个保持不变。
设置小部件的值,而不是将文本分配给innerHTML
:
需要([
“dijit/InlineEditBox”、“dijit/form/Textarea”、“dojo/domReady!”
],函数(InlineEditBox,Textarea){
var editBox=新的InlineEditBox({
编辑:Textarea,
自动保存:false
},“testDiv”);
editBox.startup();
var editText=“单击以编辑文本…”;
设置(“值”,编辑文本);
});
初始
完美,谢谢,这就成功了。我以前试过设置(“值”,…)
,但使用了错误的DOM元素-我不知道视图和编辑模式有单独的DOM元素,但我想这是有意义的。