当我在客户端对我的一个应用程序进行验证时。我想到了这些问题。
问题1:dijit.byId('someId')。value和dijit.byId('someId')。get('value')有什么区别
问题2:
for(indx in strg){
comment+=strg[indx].replace(/([^\x00-\x7E]|\\s*\\n)*$/g, '');
}
在上面的js片段中,我在浏览器控制台中遇到以下错误
replace is not a function
你能帮我解决这个问题吗
谢谢。
最佳答案
回答问题的第一部分。
dijit.byId('id');已被弃用,您应该改用dijit/registry::byId()
。registry.byId()
将返回具有相同ID的窗口小部件(如果找到)。
您可以通过以下方式在应用程序中使用它:
require(["dijit/registry"], function(registry){
var widget = registry.byId("yourId");
});
您可以使用
widget.get('nameProperty')
读取小部件的属性,例如:require(["dijit/registry"], function(registry){
var widget = registry.byId("yourId");
var widgetValue = widget.get('value');
});
通常,应使用“ getter”和“ setter”完成对小部件属性的访问。 Dojo为此提供了两个专用功能:
吸气剂:
widget.get('nameProperty');
二传手:
widget.get('nameProperty', 'newValue');
在使用getter和setter时,您可以让dojo知道这些操作,例如,在使用setter时,dojo事件会正确触发(如小部件的onChange)。
如果您直接在绕过dojo的窗口小部件上访问/设置属性,则缺少框架检测。
更多信息:
https://dojotoolkit.org/reference-guide/1.10/dijit/registry.html