javascript - dojo 1.9 自定义小部件扩展 dijit/form/DateTextBox 时出错

标签 javascript dojo

开发扩展 dijit/form/DateTextBox 的自定义小部件并收到以下错误:错误:无法解析构造函数:'GilCnPluginDojo.util.CustomDateTextBox' 有人知道发生了什么吗?看不出有什么不妥。这是我的代码:

require(["dojo/ready",
         "dojo/parser",
         "dijit/form/DateTextBox",
         "dojo/_base/declare",
         "dijit/registry"], 
        function(ready, parser, DateTextBox, declare, registry) {
         declare("GilCnPluginDojo.util.CustomDateTextBox", [DateTextBox], {
         postCreate: function() {
            this.inherited(arguments);
            this.set('constraints', {
                 min: '01/01/1950',
                max: new Date(),
                datePattern: 'MM/dd/yyyy'
            });
        }
    });
};

最佳答案

您需要将声明的类型分配给变量才能创建新对象。请参阅以下片段。 (我已经删除了不必要的模块,并且缺少一些用于下拉列表的 css 文件,但这在这里并不重要。)

require(["dijit/form/DateTextBox",
         "dojo/_base/declare"], 
        function( DateTextBox, declare) {
     var CustomDateTextBox = declare("GilCnPluginDojo.util.CustomDateTextBox", [DateTextBox], {
         postCreate: function() {
            this.inherited(arguments);
            this.set('constraints', {
                 min: '01/01/1950',
                max: new Date(),
                datePattern: 'MM/dd/yyyy'
            });
        }
    });
    
    new CustomDateTextBox().placeAt('result');
});
<script src="https://ajax.googleapis.com/ajax/libs/dojo/1.9.7/dojo/dojo.js"></script>
<link href="https://ajax.googleapis.com/ajax/libs/dojo/1.9.7/dijit/themes/claro/claro.css" rel="stylesheet"/>
<div id='result' class='claro'></div>

要在其他模块中使用自定义模块,您应该使用 define 而不是 require 并返回您声明的类。

 //CustomDateTextBox.js
 define(["dijit/form/DateTextBox", "dojo/_base/declare"], 
 function( DateTextBox, declare) {
   return declare("GilCnPluginDojo.util.CustomDateTextBox", [DateTextBox], {
    //some code
  });
});

//MainModule.js
 require(["your/path/to/CustomDateTextBox"], 
 function( CustomDateTextBox) {
   var cdtb = new CustomDateTextBox();
});

关于javascript - dojo 1.9 自定义小部件扩展 dijit/form/DateTextBox 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42406097/

相关文章:

javascript - 基于 ItemFileReadStore 和基于父模型的 Dojo Tree

javascript - Dojo:在单页应用程序中交换两个不同的 View

javascript - 无法附加 jquery

javascript - Express JS + Multer 文件上传前查询数据库

javascript - 如何从数据表滚动扩展中获取显示行?

php - JavaScript 相当于 PHP 的 __get() 魔法方法

javascript - 组织一个backbone.js集合?

Dojo 根据当前事件目标获取下一个兄弟

javascript - Dojo 省略函数延迟错误?

javascript - 在 dojotoolkit 中拖放