1
我需要在我使用下面的代碼的那一刻就dijit/form/Select
添加一些自定義的功能,但我得到以下錯誤:Dojo如何擴展dijit類?
Uncaught TypeError: SelectGroup is not a constructor
如何解決這個問題?
require([
'dijit/form/Select',
'dojo/_base/window',
'dojo/domReady!'
], function(Select, win) {
var SelectGroup = define([
"dojo/_base/declare",
"dijit/form/Select"
], function(declare, Select) {
return declare(Select, {
myCustom: function() {
alert('hey custom');
}
});
});
var select = new SelectGroup({
name: 'select',
options: [{
label: '<i>Colors I love</i>',
value: 'G 1',
disabled: true
}, {
label: 'Red',
value: '1'
}, {
label: 'Green',
value: '2',
selected: true
},
]
}, 'select');
select.on('change', function(value) {
alert(value);
});
});
就是定義和聲明的區別? – Radex
是的,我們無法做出聲明和定義之間的比較:), declare是一個js類,在dojo中我們可以創建類,小部件,並且擴展現有類或小部件,但是define是一個dojo AMD加載器,其中異步加載這些類,窗口小部件, 所以可以說需要之間的比較,並定義,不符合申報(申報是一個加載的類)和rquire定義是裝載機 –
在道場旗,創建一個新的類,你必須選擇define爲你創建的窗口部件創建一個範圍+將refrenced窗口部件加載到回調函數中,並且對於require只加載對claback的引用,在你的例子中你將它們混合,require - >並且在裏面定義一個定義它引起了這個問題。 –