当我在客户端对我的一个应用程序进行验证时。我想到了这些问题。

问题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

08-25 21:22