我正在尝试定义一个类,但是当我在代码中引用它时,我得到一个错误
错误:声明custom.place:mixin#0不是可调用的构造函数
define(['dojo', 'dijit/dijit', "dojo/_base/declare", "dijit/place"],
function(dojo, dijit, declare, place) {
return declare("custom.place", [place], {
newMethod: function() { }
});
})
这不起作用。但是下面的代码,运行正常!
define(['dojo', 'dijit/dijit', "dojo/_base/declare", "dijit/MenuItem"],
function(dojo, dijit, declare, MenuItem) {
return declare("custom.item", [MenuItem], {
newMethod: function() { }
});
})
感谢任何帮助。感谢。
答案 0 :(得分:3)
Dojo类只能扩展其他Dojo类。 dojo/place
不是Dojo类;它只是一个具有一些功能属性的对象。
require(["dijit/place", "dijit/MenuItem"], function(place, MenuItem) {
console.log(typeof place);
console.log(typeof MenuItem);
});
上面的代码给出了控制台输出:
LOG: object
LOG: function
如果你想要一个带有地方实用功能和一些额外功能的物体,你可以像这样创建你自己的版本:
define(["dojo/_base/lang", "dijit/place"], function(lang, place) {
var newMethods = {
foo : function () {}
};
return lang.mixin(newMethods, place);
});
如果你想将地方的功能混合到一个Dojo类,你可以使用safeMixin来实现它,但我不确定你为什么要这样做。