我想知道html和javascript之间的区别。
dijit.byId("link_id").value = linkData.link_id;
dijit.byId("link_id").set("value",linkData.link_id);
因为,当我使用第一个选项时,它没有在linkid文本框中设置值,但是第二个选项就是这样做了。所以只是想知道两种情况下发生了什么。
答案 0 :(得分:0)
不同之处在于,使用第一种方法,您可以直接设置窗口小部件对象的属性,例如设置value
。
然而,在第二个示例中,您使用dijit/_WidgetBase
提供的setter,后者又调用_set
函数,value
属性_setValueAttr()
属性_setValueAttr()
1}}。窗口小部件可以使用在使用该setter时将发生的自定义功能扩展这些setter。例如,它也可以采取必要的步骤来显示值。
如果我们选择 dijit / form / Select 小部件并查看{{3}}的代码,我们会注意到它会调用一些额外的函数,如:
domAttr.set(this.valueNode, "value", this.get("value"));
this._refreshState(); // to update this.state
此功能仅在使用dijit.byId("link_id").set("value", "myValue");
时调用,这就是为什么您的值仅在此情况下显示的原因。当您直接设置酒店时,您就会短路"这个功能。
TL; DR :使用Dojo小部件时始终使用setter函数。